这个问题分为两部分。我有解决方案,可以从搜索中排除帖子并将结果限制为每页 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');
现在我已经在堆栈和其他网站上做了一些阅读和研究,看起来有一种方法只能在检查管理员是否登录后才触发这些功能。我将引用 wordpress codex对于 is_admin 函数
这是我尝试使用 is_admin 函数的方式,导致 http 错误 500。如果代码严重错误,请原谅:
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文件的Pastebin http://pastebin.com/tTEnHGp2
最佳答案
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');
这应该可以做到
关于php - 修改搜索功能以排除帖子并将结果限制为仅在前端每页 10 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940060/