簡體   English   中英

修改搜索功能以排除帖子,並僅在前端將結果限制為每頁10個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM