W3 Total Cache — разрешить редакторам удалять отдельные записи из кэша

Я искал способ, позволяющий моему редактору удалить сообщение из кэша страниц.

Эта проблема:

Я делаю мета-описания обновлений, которые не обновляются после нажатия кнопки «обновить пост», и иногда заголовки не обновляются без удаления сообщения из кеша страниц. Тем не менее, он проходит, если я нажму дважды обновить.

Проблема в том, что у редактора нет прав на удаление сообщения из кэша.

Что я пробовал:

Я обнаружил, что некоторые пользователи смогли создать скрипт, но я не могу найти код для него в FAQ. 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 они ограничивают его от определенных пользователей. Что означает, что это возможно, но не прямое решение? запрещать "Очистка от кеша страниц" для конкретных ролей в w3-total-cache

Просить:

Я хотел бы найти способ для роли редактора очистить кэш страницы для одного сообщения. Если бы вы могли предоставить обходной путь, например, отдельный скрипт страницы, чтобы сделать это вручную или способ настройки разрешений с помощью functions.php Кроме того, я был бы очень признателен.

3

Решение

Мне нужна была похожая вещь, но я уверен, что вы можете адаптировать это к вашим потребностям:

Сначала несколько фильтров, чтобы оно показывало «Performance» -Menu на 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 для информации о возможности фильтра.

4

Другие решения

вам нужно установить WPFront User Role Editor (https://wpfront.com)

и проверьте вариант http://joxi.ru/n2Y09K4tLlVWm6

0

По вопросам рекламы [email protected]