编程语言
首页 > 编程语言> > php-W3总缓存-允许编辑者从缓存中清除单个帖子

php-W3总缓存-允许编辑者从缓存中清除单个帖子

作者:互联网

我一直在寻找一种允许我的编辑器从页面缓存中清除帖子的方法.

问题:

我正在进行元描述更新,这些更新不会在单击“更新后”时更新,有时标题也不会在不从页面缓存中清除发布的情况下更新.但是,如果我单击两次更新,它会通过.

问题是编辑者角色没有权限从缓存中清除帖子.

我试过的

我发现有些用户可以创建脚本,但是在常见问题解答中找不到该脚本的代码. https://wordpress.org/support/topic/plugin-w3-total-cache-can-non-admin-users-clear-the-cache

其次,我读了一些有关片段缓存的内容,但是我看不到任何进一步的文档.

第三,我尝试遵循不断变化的用户角色,但是对于插件来说,它并不安全: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来调整权限,则非常感谢.

解决方法:

我需要类似的东西,但是我敢肯定您可以根据自己的需要进行调整:

首先,一些过滤器使普通编辑者在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有关功能过滤器的信息.

标签:caching,wordpress,php,w3-total-cache
来源: https://codeday.me/bug/20191026/1939456.html