2017-04-06 101 views

回答

2

你可以设置一个$ _GET参数

function ajax_query() { 
    // Return normally if the ajax query isn't set 
    if (! isset($_GET['_pjax'])) { 
     return; 
    } 

    set_query_var('ajax', 'true'); 
} 

add_filter('template_redirect', 'ajax_query'); 

,然后就做出与参数为/page/?ajax=true您的JS AJAX调用。

在模板:

$is_ajax_query = get_query_var('ajax'); 

if ($is_ajax_query && 'true' === $is_ajax_query) : 
    get_header(); 
endif; 

至于其他的答案,我不知道,如果wp_doing_ajax功能将得到呼吁只是一个JS请求。我从来没有尝试过,没有太多的文档。我不知道WordPress如何知道这是一个AJAX请求。对于WordPress来说,它会看起来像我认为的普通获取请求。所以参数将起作用。

+0

感谢您的帮助。我使用PJAX来处理我的AJAX请求,它看起来像它通过'XHR请求: XHR完成加载:GET“http:// localhost/Sites/dev/contact /?_pjax = section.context”。 –

+0

好的,那也没关系。我改变了代码来检查'_pjax'而不是'ajax'。如果你只是想要的部分,而不是页面,我可以添加一个基于传递给'_pjax'的模板来获取模板部分的例子。 –

+0

太好了。我也发现你也可以使用if(!isset($ _ SERVER [“HTTP_X_PJAX”))),但会将你的标记标记为答案,因为这对于了解正在发生的事情更有帮助。谢谢! –