这个问题有两个部分。我有解决方案从搜索中排除帖子并将结果限制为每页10个结果,但问题是它还影响后端wp-admin区域。因此,如果我通过wp-admin区域搜索帖子,则会排除帖子,即使我只希望对非管理员用户进行此操作。这是我排除帖子并将结果限制为10的代码:
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'page');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
function change_wp_search_size($query) {
if ( $query->is_search ) // Make sure it is a search page
$query->query_vars['posts_per_page'] = 10;
return $query;
}
add_filter('pre_get_posts', 'change_wp_search_size');
现在我已经对堆栈和其他网站进行了一些阅读和研究,看起来只有在检查管理员是否已登录后才能触发这些功能。我将参考{{3对于is_admin函数
这是我尝试使用导致http错误500的is_admin函数的方式。如果代码严重不正确,请原谅:
if ( !is_admin() ) {
function SearchFilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type', 'page');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
if ( !is_admin() ) {
function change_wp_search_size($query) {
if ( $query->is_search && !is_admin() )
$query->query_vars['posts_per_page'] = 10;
return $query;
}
add_filter('pre_get_posts', 'change_wp_search_size');
我希望我很接近,只需要对代码进行一些调整
编辑: 所以现在这就是我对这两个功能所拥有的。我知道我的PHP代码,这是你可以帮助进一步解决的问题:
function SearchFilter($query) {
if ( is_admin () ) {
return $query;
}
else {
($query->is_search) {
$query->set('post_type', 'page');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
function change_wp_search_size($query) {
if ( is_admin () ) {
return $query;
}
if ( $query->is_search ) // Make sure it is a search page
$query->query_vars['posts_per_page'] = 10;
return $query;
}
add_filter('pre_get_posts', 'change_wp_search_size');
编辑2:整个function.php文件wordpress codex
的Pastebin答案 0 :(得分:2)
function SearchFilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type', 'page');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
function change_wp_search_size($query) {
if ( $query->is_search && !is_admin() ) {
$query->query_vars['posts_per_page'] = 10;
}
return $query;
}
add_filter('pre_get_posts', 'change_wp_search_size');
这应该这样做
答案 1 :(得分:1)
好的,不要将搜索功能包裹在 is_admin()中,而是将 is_admin()放在函数内
像这样:
Function search(){
if ( is_admin()){
//Search query for admin
}
else {
//Search query for users
}
}
应该这样做