我将过滤帖子类型,并在搜索时仅在前端显示已发布的帖子。 所以我用这段代码来做这件事。
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。
我该如何解决这个问题?