2015-09-30 45 views
0

我的WordPress網站上有一個page,它使用了模板,並且在該模板中,我使用get_posts來獲取我的CPT的結果。在我的CPT中,只允許一個職位同時擁有publish的身份,而其他職位則保持在draft模式。但是,我希望訪客用戶(即無法訪問我網站上的帳戶的網站訪問者)能夠訪問該網頁並查看處於其草稿狀態的帖子。阻止WordPress過濾掉get_posts中的客人的草稿帖子

我使用這些參數傳遞給取結果

$args = array(
       'name' => $slug, 
       'post_type' => 'catalog', 
       'post_status' => array('draft', 'publish'), 
      ); 
$catalogs = get_posts($args); 

上面的代碼工作正常登錄的用戶,但是當我退出它返回空。我敢肯定,一些WordPress過濾器是負責這一點。我無法弄清楚如何讓它停止。

附加信息:我可以使用$wpdb獲取想要的結果,但我希望這也可以通過一些自定義過濾器來完成。我做了我的研究,但找不到任何有用的東西,WordPress Codex不包含任何有關這方面的信息。

+0

您放入的代碼並不會添加到正在發生的事件中。這絕對不是你放置在那裏的代碼造成的。是什麼導致它可能是您的網站中的代碼,我們永遠不會知道,因爲沒有過濾器或掛鉤可能導致您的代碼段在用戶未登錄時無法運行。我的建議是,禁用所有插件或操作掛鉤主題來確定發生了什麼。 – cylua2

+0

我也檢查了代碼,但沒有什麼可以做到這一點的。所有使用的插件都是由我編寫的,它們都沒有真正涉及到如何檢索帖子。我確實在網上找到一些人說WordPress可以禁止客人訪問草稿文檔 –

回答

0

好吧,我想我明白你的意思。請嘗試以下代碼片段

/* 
* On drafts should be visible. 
*/ 
function show_drafts($query) { 
    $query->set('post_status', array('publish', 'draft')); 
} 

add_action('pre_get_posts', 'show_drafts'); 

這應該允許草稿和發佈在您使用get_posts方法時對所有人都可見。

+0

仍然沒有任何草稿。我也試過使用'$ args ['post_status'] = array('any');'但這也沒有幫助。 –