Intereting Posts
Каков наилучший способ включения пользовательских шрифтов? Как проверить, существует ли короткий код? Такое же меню для разных таксономий для достижения различного контента Несколько цветов в теме WordPress за раз Заказывать результаты архива по идентификатору сообщения в шаблоне пользовательской таксономии Изменение активного меню на прокрутке Пользовательский таксономический термин как класс? WP 4.8: новый синтаксис таксономии для get_term_by и get_term_link? Показать наиболее популярные за последние два дня Голосовая почта YearWise Общие пользовательские таблицы на 2 сайтах WordPress; «Основной» сайт и «Обсудить» с использованием P2? template_redirect вызывается дважды Получить содержимое определенной страницы (по идентификатору) Автоматически добавлять атрибуты к продукту woocommerce? Инструменты для преобразования существующего дизайна веб-сайта в шаблон WordPress?

Как передать короткий код в ответе AJAX?

проблема

У меня есть одностраничный макет, который отображает гармоничное WP меню моих названий страниц. Я использую AJAX для загрузки и отображения содержимого WP соответствующей страницы в div, который вставлен в элементы списка меню, который работает.

Проблема заключается в следующем : я не могу получить сторонние короткие коды для обработки с использованием вызова AJAX, вместо этого они отображаются в исходном состоянии (например: [buzzsprout]).

Интересно отметить, однако, что ярлыки родных WP коротко выглядят прекрасно (например: [аудио], как показано на вкладке «Последние сообщения»). Таким образом, похоже, что это ограничивается только шорт-кодами сторонних разработчиков из плагинов.

Наконец, я прочитал несколько мест, которые могут быть ограничением из-за того, что URL-адрес WP AJAX не имеет доступа ко всей среде WP, только администратор как его вызвал, но другие сказали, что это неверно.

Итак, мне любопытно …


Вопросов

  1. Есть ли способ получить AJAX-процесс и отобразить сторонние короткие коды, используемые в содержимом страницы WP?
  2. Каков наилучший способ сделать это?

Вот мой код …


JS

$("#tabs li a").click(function() { var id = ($(this).attr("data-id")); $.ajax({ type: 'POST', url: ajax_object.ajax_url, data: { 'action' : 'fetch_ajax_content', 'id' : id }, success:function(data) { $('.ajax-content').remove(); $('#tabs li').removeClass('active'); $('[data-id=' + id + ']').parent().append(data).hide(); $('[data-id=' + id + ']').parent().addClass('active'); $('.active').slideToggle(); } }); }); 

PHP

 if ( ! function_exists( 'vwo_enqueue_scripts' ) ) { function vwo_enqueue_scripts() { wp_enqueue_script( 'vwo-scripts', get_template_directory_uri() . '/js/scripts.js', array( 'jquery' ), '1.0', true ); wp_localize_script( 'vwo-scripts', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); } } add_action( 'wp_enqueue_scripts', 'vwo_enqueue_scripts' ); 

 function fetch_ajax_content() { if ( isset( $_POST ) ) { $id = $_POST['id']; $page = get_page( $id ); ?> <div class="ajax-content"> <?php echo apply_filters( 'the_content', $page->post_content ); ?> </div> <?php } die(); } add_action( 'wp_ajax_fetch_ajax_content', 'fetch_ajax_content' ); add_action( 'wp_ajax_nopriv_fetch_ajax_content', 'fetch_ajax_content' ); 

Любая помощь будет принята с благодарностью, спасибо!

Solutions Collecting From Web of "Как передать короткий код в ответе AJAX?"

В общем, sshortcodes не являются конструкцией программирования, они являются макросами содержимого. В качестве макросов контента их жизнеспособность в использовании вне контекста контента ограничена. Упрощенные короткие коды, такие как галерея / аудио / видео (и я не уверен даже о них), могут «визуализировать» без контекста, но для продвинутых требуется правильно установленный цикл и вызовы wp_head и wp_footer .

Нет простого общего способа использования коротких кодов в ситуациях, когда они не были предназначены для использования, и каждый отдельный короткий код, который вы, возможно, захотите ввести в «рабочий», может потребовать хорошего понимания его собственного кода и требований к окружающей среде, что-то, что вы может быть достигнут, если вы создадите сайт, но, вероятно, безнадежная задача, если вы пытаетесь создать какую-то общую тему или плагин.