对于自定义需求,我应该通过ajax将一些帖子的内容加载到自定义模板页面中。 我使用了 apply_filters('the_content',$ key-> content); ,它在我的wordpress页面上运行良好。但是当我将WP的版本更新为4.9.8时 它已经停止并且ajax响应对于某些短代码而言只是一个空字符串,对于其他一些而言则只是未完全加载的内容。
在搜索后,我添加了此片段
/ *-自Visual Compoer V 4.9起是必需的--- * / 如果(class_exists('WPBMap') && method_exists('WPBMap', 'addAllMappedShortcodes')){
WPBMap::addAllMappedShortcodes();
}
else{
do_action( 'template_redirect' );
}
但是问题没有解决!
我的代码是:
jQuery.ajax({ 网址:postdigital.ajax_url, 类型:“ post”, 数据:{ 动作:“ get_activContent_byID_posts”, post_id:idContent }, 成功:功能(响应){
// console.log(response+' tesssst');
}
});
add_action('wp_ajax_nopriv_get_activContent_byID_posts','get_activContent_byID_posts'); add_action('wp_ajax_get_activContent_byID_posts','get_activContent_byID_posts'); 函数get_activContent_byID_posts(){ 全局$ wpdb;
$divContent=$wpdb->get_results("SELECT type, content FROM `tablename` WHERE id=".$_REQUEST['post_id']);
/* --- Necessary since Visual Compoer V 4.9 --- */
if ( class_exists( 'WPBMap' ) && method_exists( 'WPBMap', 'addAllMappedShortcodes' ) ) {
WPBMap::addAllMappedShortcodes();
}
else{
do_action( 'template_redirect' );
}
foreach($divContent as $key)
{
$html= apply_filters( 'the_content', $key->content );
}
echo $html;
wp_die(); // wp_die() instead of die() provides better integration with WordPress
}