[英]Modifying search function to exclude posts and limit results to 10 per page on front end only
這個問題有兩個部分。 我有解決方案從搜索中排除帖子並將結果限制為每頁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');
現在我已經對堆棧和其他站點進行了一些閱讀和研究,看起來只有在檢查管理員是否已登錄后才能觸發這些函數。我將參考wordpressx用於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
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');
這應該做到
好的,不要將搜索函數包裝在is_admin()周圍,而是將is_admin()放在函數中
像這樣:
Function search(){
if ( is_admin()){
//Search query for admin
}
else {
//Search query for users
}
}
應該這樣做
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.