Wordpress pre_get_posts操作:检查当前查询是否适用于管理仪表板

时间:2018-03-15 13:18:38

标签: wordpress

我将过滤帖子类型,并在搜索时仅在前端显示已发布的帖子。 所以我用这段代码来做这件事。

function custom_search_preprocess($wp_query) {
    if ($wp_query->is_search() && get_search_query() && $wp_query->is_main_query()) {
    $wp_query->set('post_type', array(
       'page','post', 'movie',
    ));
    $wp_query->set('post_status', 'publish');
}

它运作良好。 但我注意到它影响了管理仪表板。 在管理仪表板上时,它仅显示搜索时发布的帖子。 我知道有一个WP函数来检查这个。 is_admin() 所以我使用该功能,下面是更新的代码。

function custom_search_preprocess($wp_query) {
    if(is_admin()) return;
    if ($wp_query->is_search() && get_search_query() && $wp_query->is_main_query()) {
    $wp_query->set('post_type', array(
       'page','post', 'movie',
    ));
    $wp_query->set('post_status', 'publish');
}

但是当AJAX调用前端时,此函数返回true。

我该如何解决这个问题?

0 个答案:

没有答案