2014-02-24 56 views
0

我做了一個metabox,使一個職位私人或公共。WordPress的搜索查詢錯誤

當用戶登錄時,所有帖子都會顯示,但是當用戶沒有登錄時,只會顯示公開帖子。

一切都沒問題我的查詢和條件在其他頁面運行良好,但是當我搜索一篇文章,我註銷時,私人帖子也會顯示給我。

我無法理解發生了什麼。這裏是我的代碼:

的search.php

<?php 
    global $post; 

    $public = array('meta_key' => 'rd_login_posts', 'meta_value' => 0, 'posts_per_page' => 999); 
    $public_private = array('posts_per_page' => 999); 

    if(!is_user_logged_in()){ 
     $st_cat_posts = get_posts($public); 
     //echo "No Login"; 
    }else{ 
     $st_cat_posts = get_posts($public_private); 
     //echo "Yes Login"; 
    } 

    foreach($st_cat_posts as $post) : setup_postdata($post); 
      get_template_part('content', get_post_format()); 
    endforeach; 
?> 

在兩頁它工作正常,但在搜索時,結果不健全它讓我所有的結果。

請幫助我,有什麼建議

+0

你有沒有加入這個代碼放到'search.php' ??? –

+0

是的,我在這個<?php printf(__('搜索結果:%s','framework'),''。get_search_query()。'')之後在search.php中添加此代碼。 ?> – Nadeem

回答

0

謝謝很多@Akshay Paghdar幫助我,但我搜索,搜索並找到解決方案,我的代碼運行良好

的search.php我只編輯陣列一個參數

$public = array('meta_key' => 'rd_login_posts', 'meta_value' => 0, 'posts_per_page' => 999, 's' => get_search_query()); 
$public_private = array('posts_per_page' => 999, 's' => get_search_query()); 
0

試試這個,

你應該在你search.php添加此代碼..

<?php 
global $post; 

if(!is_user_logged_in()){ 
    set_query_var('meta_key', 'rd_login_posts'); 
    set_query_var('meta_value', 0); 
} 
set_query_var('posts_per_page', 999); 

if (have_posts()) : 
    while (have_posts()) : the_post(); 
     get_template_part('content', get_post_format()); 
    endwhile; 
endif; 
?> 

希望工程......

+0

沒有兄弟它給我一個語法錯誤 – Nadeem

+0

什麼錯誤???你能提供嗎? –

+0

set_query_var()當我寫這個我的編輯器給我的語法錯誤 – Nadeem