2016-07-29 127 views
3

我一直在尋找一種方法來讓我的編輯器從頁面緩存中清除帖子。W3總緩存 - 允許編輯從緩存中清除單個帖子

問題:

我在做的是不要讓在單擊「後更新」,有時標題不要讓不清除從頁面緩存後也更新了最新的meta描述的更新。但是,如果我點擊更新兩次,它會經歷。

問題是編輯器角色沒有權限從緩存中清除帖子。

我曾嘗試:

我發現,一些用戶能夠創建一個腳本,但我不能找到在常見問題解答它的代碼。​​

其次,我讀了幾個提到分段緩存,但我沒有看到任何進一步的文檔。

第三,我試圖按照不斷變化的用戶角色,但它沒有看到安全的插件:https://wordpress.org/support/topic/allow-editors-to-flush-cache-from-toolbar

第四,我發現在這一些其他的利益,但它並沒有得到解決:https://wordpress.org/support/topic/editor-user-level-able-to-purge-cache

第五,在StackOverflow中,它們限制了某些用戶的使用。這意味着這是可能的,但不是直接的解決方案? disable "Purge from Page Cache" for specific roles on w3-total-cache

問計:

我想找到的編輯角色的方式清空頁面緩存的單篇文章。如果您可以像單獨的頁面腳本一樣提供解決方法來手動執行此操作,或者使用functions.php另外的方式來調整權限,我將非常感激。

回答

2

我需要一個類似的事情,但我敢肯定,你可以在此適應您的需求:

一是一些過濾器,使之出現「性能」 - 菜單上AdminBar正常編輯:

function allow_users_to_flush($capability) { 
    return "publish_post"; 
} 
add_filter("w3tc_capability_row_action_w3tc_flush_post", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_w3tc_flush", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_w3tc_flush_all", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_admin_bar", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_admin_bar_flush_all", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_admin_bar_w3tc", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_admin_bar_flush", "allow_users_to_flush", 10, 10); 
add_filter("w3tc_capability_w3tc", "allow_users_to_flush", 10, 10); 

而且,因爲用戶必須被允許訪問儀表盤的清洗/沖洗,蓋過濾器:

function w3tc_cap_filter($allcaps, $cap, $args) { 
    if(preg_match("/w3tc_dashboard/", $_SERVER["REQUEST_URI"])) { 
     $allcaps[$cap[0]] = true; 
    } 
    return $allcaps; 
} 
add_filter('user_has_cap', 'w3tc_cap_filter', 10, 3); 

瞧,現在用戶看到菜單,可以清空緩存(我需要「清除所有緩存」,而不是一個單獨的帖子/頁面,但這應該是一樣的)。

我的權限相當寬泛,但適用於我的情況。您可能需要根據您的要求添加更多保護措施。 僅供參考:

http://hookr.io/plugins/w3-total-cache/0.9.5/filters/#index=w對w3中的過濾器有很好的概述。

https://codex.wordpress.org/Plugin_API/Filter_Reference/user_has_cap瞭解有關功能過濾器的信息。

+0

它的工作原理,但是:迴歸 「publish_posts」; –