2009-06-16 32 views
7

在一個新的WordPress 2.8安裝中,我有一些職位被分配到Foo類,這些職位以前是公開的,但之後已經變爲私有。當我登錄到WordPress(作爲管理員)並碰巧也在同一瀏覽器的不同標籤中瀏覽Foo類別頁面時,我可以在類別頁面上看到私人帖子,條目標題前綴爲「私人的: 」。WordPress會向登錄用戶顯示私人信息 - 如何關閉此功能?

現在,沒有什麼是「破」這一點 - 從未登錄的用戶正確隱藏帖子。但我不希望登錄用戶在實時網站上看到私人帖子,因爲坦白地說,這只是令人討厭的,沒有幫助。

對於類別歸檔頁面上的WP循環或功能文件,我應該怎麼做才能關閉此不需要的功能以查看網站上的私人帖子?

+0

非管理員也看到他們嗎? – jitter 2009-06-16 07:09:58

+0

是否因爲您的管理員用戶擁有比普通用戶稍多的權限?你有沒有嘗試過創建一個標準的「Subscriber」用戶,看看你是否遇到同樣的問題? – Amadiere 2009-06-16 07:10:52

+0

系統上只有兩個用戶,兩個管理員。我不想在登錄時看到這個博客上的私人帖子(前端,我的意思是 - 你知道,瀏覽網站的用戶)。因此創建一個「訂戶」用戶不會幫助這個問題 - 我仍然需要以管理員身份登錄以進行後端站點維護等。 – Asparagirl 2009-06-16 09:35:47

回答

18

的破解方式,做你想做的就是把下面這行代碼在你的循環(頂部the_post後()部分:

if(get_post_status()=='private') continue; 

這是黑客攻擊的方式,因爲你的WordPress仍然從數據庫中加載該帖子,並將其分解爲帖子數量等,但在顯示時忽略它。如果您搜索的只是私人帖子中的短語,則會得到一個沒有任何錯誤的空白頁,

正確的方法是添加一個過濾器來修改用於生成t的SQL他的職位清單。棘手的部分是如果你在管理部分不過濾它,否則你永遠不會再看到你的私人帖子。這個過濾器的最佳位置在你主題的functions.php文件中。下面是你應該把什麼在那裏:

add_filter('posts_where', 'no_privates'); 
function no_privates($where) { 
    if(is_admin()) return $where; 

    global $wpdb; 
    return " $where AND {$wpdb->posts}.post_status != 'private' "; 
} 
0

這不是直接解決確切問題的方法,但您可以隱藏這些帖子的方法之一是將它們分配給特定類別,然後將該類別隱藏在循環中顯示。從給定類別中排除帖子來自顯示器中,循環(而()語句後立即)的內部使用此行的代碼:

<?php if (in_category('3')) continue; ?> 

在這個例子中,圖3是該類別的類別ID來排除,代碼只是告訴WordPress繼續下一篇文章,而不顯示這一個。

1

所以,如果沒有人來查看這些私人職位,包括管理員,爲什麼不設定它們的狀態未公佈或草案?

相關問題