У меня есть одностраничный макет, который отображает гармоничное WP меню моих названий страниц. Я использую AJAX для загрузки и отображения содержимого WP соответствующей страницы в div, который вставлен в элементы списка меню, который работает.
Проблема заключается в следующем : я не могу получить сторонние короткие коды для обработки с использованием вызова AJAX, вместо этого они отображаются в исходном состоянии (например: [buzzsprout]).
Интересно отметить, однако, что ярлыки родных WP коротко выглядят прекрасно (например: [аудио], как показано на вкладке «Последние сообщения»). Таким образом, похоже, что это ограничивается только шорт-кодами сторонних разработчиков из плагинов.
Наконец, я прочитал несколько мест, которые могут быть ограничением из-за того, что URL-адрес WP AJAX не имеет доступа ко всей среде WP, только администратор как его вызвал, но другие сказали, что это неверно.
Итак, мне любопытно …
Вот мой код …
$("#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(); } }); });
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' );
Любая помощь будет принята с благодарностью, спасибо!
В общем, sshortcodes не являются конструкцией программирования, они являются макросами содержимого. В качестве макросов контента их жизнеспособность в использовании вне контекста контента ограничена. Упрощенные короткие коды, такие как галерея / аудио / видео (и я не уверен даже о них), могут «визуализировать» без контекста, но для продвинутых требуется правильно установленный цикл и вызовы wp_head
и wp_footer
.
Нет простого общего способа использования коротких кодов в ситуациях, когда они не были предназначены для использования, и каждый отдельный короткий код, который вы, возможно, захотите ввести в «рабочий», может потребовать хорошего понимания его собственного кода и требований к окружающей среде, что-то, что вы может быть достигнут, если вы создадите сайт, но, вероятно, безнадежная задача, если вы пытаетесь создать какую-то общую тему или плагин.