“is”函数和“get_Query_var”不起作用

时间:2018-11-30 作者:Alex

为什么is 函数在Ajax函数中不工作?除了is_user_logged_in?

我还尝试使用get_query_var 但它没有起作用。

jQuery:

jQuery(\'.post-modal\').live(\'click\', function(e) {       

    e.preventDefault();

    var post_id = jQuery(this).data(\'post-id\');

    jQuery.ajax({
        type: \'POST\',
        url: mysite.ajax_url,
        data: {
            \'action\' : \'post_modal_content\',
            \'post_id\' : post_id             
        },                      
        success: function(response) {
            var json = jQuery.parseJSON(response);
            jQuery(\'#post-modal .content\').html(json.html);             
        }                                   
    });     
});
PHP:

function post_modal_content() {

    $post_id = $_POST[\'post_id\'];   

    if (is_author()) {
        set_query_var(\'post_id\', $post_id);
        ob_start();
        get_template_part(\'content-post-modal\');
        $html = ob_get_contents();
        ob_end_clean();  

        $response = array(\'html\' => $html);
        echo json_encode( $response );
        exit;
    }   
}
add_action( \'wp_ajax_post_modal_content\', \'post_modal_content\' );
add_action( \'wp_ajax_nopriv_post_modal_content\', \'post_modal_content\' );
如果我在作者页面上,它就不起作用,但如果我检查一下,一切都正常。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

将AJAX请求发送到/wp-admin/admin-ajax.php (这很好),所以这不是一个典型的WP请求。

在这种请求期间,不会解析请求,也不会创建全局WP\\U查询,等等。

is_author 是一个Conditional Tag, 检查是否显示作者存档页。所以,根据设计,在AJAX请求期间它将返回false,因为AJAX请求并没有显示作者存档页面。。。

另一方面is_user_logged_in() 工作正常,因为用户在AJAX请求期间仍然登录(这是同一个会话)。

附言,这和get_query_var - 未分析或执行任何查询,因此没有可用的查询变量。。。

相关推荐

如何全局使用wp_LOCALIZE_SCRIPT()AJAX URL

我已将此添加到functions.php 并且需要使用ajaxURL 在模板中的所有排队脚本中(而不是在此处仅将一个脚本排队add_action( \'wp_enqueue_scripts\', \'ajaxify_enqueue_scripts\' ); function ajaxify_enqueue_scripts() { wp_localize_script( \'ajaxify\', \'ajaxURL\', array(\'ajax_url\' => get_tem