通过Ajax加载CF7表单

时间:2013-05-11 17:50:38

标签: php wordpress jquery wordpress-plugin contact-form-7

我将通过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();
}

2 个答案:

答案 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