首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改搜索功能,将帖子排除在外,并将结果限制为每页仅在前端10页

修改搜索功能,将帖子排除在外,并将结果限制为每页仅在前端10页
EN

Stack Overflow用户
提问于 2016-10-09 04:35:54
回答 2查看 1.5K关注 0票数 2

这个问题有两部分。我有一个解决方案,从搜索排除帖子,并将结果限制在每页10个结果,但问题是,它也影响后端wp-管理区域。因此,如果我通过wp区域搜索帖子,那么这些帖子将被排除在外,即使我只希望这发生在那些不是管理员的用户身上。这是我将帖子排除在外并将结果限制为10的代码:

代码语言:javascript
复制
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函数的方式。如果代码严重错误,请原谅:

代码语言:javascript
复制
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代码,这就是问题所在,请您进一步帮助一下:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-09 11:19:29

代码语言:javascript
复制
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');

这样就行了

票数 3
EN

Stack Overflow用户

发布于 2016-10-09 05:14:15

好的,不要将搜索函数包装在is_admin()周围,而是将is_admin()放在函数中

如下所示:

代码语言:javascript
复制
Function search(){
    if ( is_admin()){
        //Search query for admin
    }
   else {
       //Search query for users
   }
}

那应该就行了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39940060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档