问题
我有一个单页布局,显示一个手风琴式的页面标题WP菜单。我使用AJAX将相应页面的WP内容加载并显示到一个div中,该div将get插入菜单的列表项中,这是可行的。
The problem I have is this: 我无法使用AJAX调用来处理第三方短代码,相反,它们是以原始状态呈现的(例如:[buzzsprout])。
然而,值得注意的是,本机WP短代码似乎呈现良好(如最新消息选项卡中所示:[音频])。因此,这似乎仅限于来自插件的第三方短代码。
最后,我在多个地方读到,这可能是一个限制,因为WP AJAX url不能访问所有WP环境,只能访问其所称的管理员,但其他人说这不是真的。
所以,我很好奇。。。
有没有任何方法可以让AJAX处理并呈现WP页面内容中使用的第三方短代码最好的方法是什么这是我的代码。。。
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\' );
非常感谢您的帮助,谢谢!