这个问题有两部分。我有一个解决方案,从搜索排除帖子,并将结果限制在每页10个结果,但问题是,它也影响后端wp-管理区域。因此,如果我通过wp区域搜索帖子,那么这些帖子将被排除在外,即使我只希望这发生在那些不是管理员的用户身上。这是我将帖子排除在外并将结果限制为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');现在,我已经在堆栈和其他站点上做了一些阅读和研究,看起来只有在检查admin是否登录之后才能触发这些功能。我将引用wordpress代码库作为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文件http://pastebin.com/tTEnHGp2的Pastebin
发布于 2016-10-09 11:19:29
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');这样就行了
发布于 2016-10-09 05:14:15
好的,不要将搜索函数包装在is_admin()周围,而是将is_admin()放在函数中
如下所示:
Function search(){
if ( is_admin()){
//Search query for admin
}
else {
//Search query for users
}
}那应该就行了
https://stackoverflow.com/questions/39940060
复制相似问题