我将通过ajax加载通过CF7插件生成的我的一个表单的短代码内的页面内容。 呈现内容时,不处理短代码并以文本形式打印。 反正是否强制在ajax调用中执行短代码? 谢谢, 微米。
这是js脚本:
function getcontent(postid){
// here is where the request will happen
jQuery.ajax({
url: '/wp-admin/admin-ajax.php',//ajax controller request
data:{
'action':'dch',//action invoked
'fn':'ghcontent',//function required
'postid':postid//if of post required
},
cache: false,
async:true,
timeout: 3000,
success:function(data){
jQuery("#posthome").html(data);//print the html (content)
},
error: function(errorThrown){
console.log(errorThrown);
}
});
}
这是我的PHP代码:
add_action('wp_ajax_nopriv_dch', 'ghcontent');
add_action('wp_ajax_dch', 'ghcontent');
function ghcontent(){
$args = array('page_id' => $_REQUEST['postid']);
query_posts($args);
if(have_posts()) :
while (have_posts()) : the_post();
the_content();
endwhile;
endif;
die();
}
答案 0 :(得分:0)
the_content
过滤器运行时应用短代码:
$post = get_post( $_REQUEST['postid'] );
$return = apply_filters( 'the_content', $post->post_content );
echo $return;
die();
答案 1 :(得分:0)
do_shortcode不能在您的admin-ajax.php中工作而是尝试生成您自己的ajax操作。检查以下类似问题的答案: https://wordpress.stackexchange.com/questions/53309/why-might-a-plugins-do-shortcode-not-work-in-an-ajax-request