2016-02-04 2 views
1

Я запрашиваю содержимое из WordPress с помощью плагина «REST API V2». Это отлично работает. Осталось только одна проблема: Содержимое, созданное плагином «VisualComposer», не отображается в ответе REST.WordPress «REST API» - визуализировать содержимое VisualComposer

Response является:

[vc_row]Hello World . . .[/vc_row] 

Ответ должен быть:

<div class="row">Hello World . . .</div> 

Как это может быть достигнуто ?? Спасибо?

ответ

1

Вот как Visual Composer сохраняет контент. Если вы отключите Visual Composer, вы увидите, что все, что он оставляет, представляет собой серию коротких кодов в каждом посте, в котором вы его использовали. WP REST API не выполняет короткие коды перед возвратом сохраненного содержимого. Возможно, вам захочется взглянуть на разработчиков страниц, которые пишут чистый HTML вместо того, чтобы полагаться на короткие коды, если вы не хотите преобразовывать контент после его получения, или вы можете создать пользовательскую конечную точку для WP REST API, которая запускает короткий код перед возвращая HTML.

Похоже, что у них есть конечная точка, похожая на то, что я рекомендую в WP.com API, но ничего подобного в WP REST API пока нет, AFAIK.

Существует большое изложение плагинов для построения страниц here, если вы хотите пойти по этому маршруту.

2

Я решил это, используя другой плагин REST для WordPress (JSON API). Этот плагин отображает ответ, как ожидалось. Штрих-коды VisualComposer теперь находятся в HTML.

+0

Могу ли я спросить, что плагин вы использовали? –

+0

Я больше не использую интерфейс, но думаю, что это возможно с помощью службы wordpress REST. – mittererr

4

Я думаю, что вы можете найти ответ на свой вопрос здесь с WP REST API v2: https://github.com/WP-API/WP-API/issues/2578

Приведенный ниже пример был взят по ссылке выше (спасибо, bradmsmith!)

Вот пример того, как оказать шорткоды ВК на содержание поста:

add_action('rest_api_init', function() 
{ 
    register_rest_field(
      // if you need it to work with other (even custom post) types, 
      // then you have to use an array: 
      // array('page', 'post', 'custom_post_type', 'etc') 
      // this example only does the trick for 'page' 
      // look at the link in the first EDIT section of this answer 
      'page', 
      'content', 
      array(
       'get_callback' => 'compasshb_do_shortcodes', 
       'update_callback' => null, 
       'schema'   => null, 
     ) 
     ); 
}); 

function compasshb_do_shortcodes($object, $field_name, $request) 
{ 
    WPBMap::addAllMappedShortcodes(); // This does all the work 

    global $post; 
    $post = get_post ($object['id']); 
    $output['rendered'] = apply_filters('the_content', $post->post_content); 

    return $output; 
} 

EDIT

Вот ссылка для функции register_rest_field(): register_rest_field()

+0

не работает для меня – Imran

+0

жаль слышать это ... возможно, вы можете опубликовать свои вопросы по ссылке github в начале моего ответа :) –

+0

Где мне нужно положить этот код? – DD77

Смежные вопросы