Вопрос: Вызов шорткода в результате wp_localize_script strips

Я работаю над добавлением некоторых функциональных возможностей в плагин Wordpress, который после определенного клика должен вызывать некоторый шорткод через ajax.

Сначала я попытался вызвать короткий код внутри обработки ajax в моем файле functions.php:

add_action( 'wp_ajax_nopriv_showads', 'showads' );function showads(){    echo do_shortcode('[myshortcode]');    wp_die();}

Куда я бы переместил вывод короткого кода в ответ на вызов ajax. Этот шорткод вообще не выполнялся.

Поэтому вместо некоторых исследований функции wp_localize_script внутри плагина я бы назвал шорткод:

    wp_localize_script( 'script-handle', 'ajax_object',                       array('ajaxurl' => admin_url( 'admin-ajax.php' ),                            'adspace' => do_shortcode( '[myshortcode]' )     ));

И в ответ Я бы переместил вывод шорткода.

Проблема, с которой я столкнулся на данный момент, заключается в том, что как только вызывается функция "wp_localize_script", вывод шорткода (он должен создать рекламу в Google) полностью удаляется.

Я хотел бы знать, есть ли способ, чтобы вывод шорткода не удалялся, или совет, если я пытаюсь решить все это неправильно.

Ответы и комментарии:

Вы создали шорткод? Почему бы не вызвать обратный вызов шорткода напрямую вместо использования do_shortcode?
Создан 24-05-2016 07:44 czerspalace

Я не создал шорткод, плагин стороннего производителя, к которому я добавляю функциональность. У вас есть примеры прямого обратного вызова?
Создан 24-05-2016 08:10 thairish

@thairish Можете ли вы опубликовать ожидаемый и лишенный результат? С другой стороны, почему шорткод не выполнялся в вызове Ajax, посмотрите это
Создан 27-05-2016 08:49 Rahil Wazir

Попробуйте добавить ob_start (); и ob_clean (); чтобы показать функцию, что может быть лучше, чтобы не нарушать вывод.
function showads () {
    ob_start ();
    echo do_shortcode ('[myshortcode]');
    $ result = ob_clean ();
    вернуть $ результат;
    выход();
}
Создан 29-09-2016 07:01 Benoti1,9682611

Возвращаясь из функции, вы должны использовать ob_start () и ob_get_clean (), и только тогда вы можете получить результат там, где вам нужно.
ob_start ():
ob_start - включить буферизацию вывода
Эта функция включает буферизацию вывода. Пока активна буферизация вывода, из сценария не отправляются выходные данные (кроме заголовков), вместо этого выходные данные сохраняются во внутреннем буфере.
Выходные буферы являются наращиваемыми, то есть вы можете вызывать ob_start (), пока активен другой ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если несколько функций обратного вызова вывода активны, выходные данные фильтруются последовательно через каждую из них в порядке вложенности.
ob_get_clean ():
ob_get_clean - получает текущее содержимое буфера и удаляет текущий выходной буфер
ob_get_clean () по существу выполняет оба ob_get_contents () и ob_end_clean ().
Выходной буфер должен быть запущен ob_start () с флагом PHP_OUTPUT_HANDLER_CLEANABLE. В противном случае ob_get_clean () не будет работать.
Пример:
функция event_form ()
{
  ob_start ();
  include ('event_form.php'); // Вы можете включить или распечатать короткий код здесь
  $ output = ob_get_clean ();
  вернуть $ output;
}
Создан 29-09-2016 07:23 Naresh Kumar .P28715