我知道你可以使用WP_Query
如果用戶是登錄返回的狀態爲private
的所有帖子,但看不到如何爲未登錄的用戶做到這一點?如何向未登錄的用戶顯示密碼保護頁面?
EG:對於誰是登錄的用戶...
$query = new WP_Query('post_status=private');
但是,如何爲誰是登錄不用戶呢?
我知道你可以使用WP_Query
如果用戶是登錄返回的狀態爲private
的所有帖子,但看不到如何爲未登錄的用戶做到這一點?如何向未登錄的用戶顯示密碼保護頁面?
EG:對於誰是登錄的用戶...
$query = new WP_Query('post_status=private');
但是,如何爲誰是登錄不用戶呢?
您可以使用過濾器posts_clauses
,如:
add_filter('posts_clauses', 'wpse70214_posts_clauses');
function wpse70214_posts_clauses($pieces)
{
global $wpdb;
if(!is_user_logged_in())
$pieces['where'] = str_replace(
"post_status = 'publish')",
"post_status = 'publish' OR $wpdb->posts.post_status = 'private') ",
$pieces['where']
);
return $pieces;
}
你可以創建一個訪客用戶,如果當前用戶沒有登錄使用代碼作爲訪客登錄它們,那麼你的查詢將工作。
您將需要在構建解決方案時查看組和權限。此外,最後要考慮的是如何向訪客用戶呈現登錄屏幕,以便他們可以作爲真實用戶登錄。
嗨亞當,感謝您的回答,但我不是一個強大的開發人員,所以甚至不知道如何開始做類似的東西...當然有一個更簡單的方法? – myatix
看起來像一個明確的解決方案!將嘗試它,讓你知道盡快!非常感謝您的幫助! :) – myatix
只是一個簡單的問題。我試圖阻止這個代碼在我的function.php頁面中,然後調用我的頁面模板中的函數wpse70214_posts_clauses(),但它不會返回任何內容?對不起,我不是一個很強大的開發人員。感謝您迄今的幫助... – myatix
不,您沒有呼叫功能。過濾器照顧這一點。比'functions.php'更好的是創建[你自己的小工具插件](http://wordpress.stackexchange.com/q/72160/12615)。 – brasofilo