Intereting Posts
Страницы пользовательского типа сообщений «не найдены» Изменение префиксов таблиц – как только это сделано, я готов идти вперед? класс меню отсутствует в меню wordpress Захват таксономических терминов и вставка их в массив Внешнее соединение с БД Используйте 'add_theme_support' вместо 'add_custom_image_header' В WordPress 3.4 Как сделать ссылку на разные категории, которые в них загружают разные меню? Скрыть метабокс в зависимости от выбранного шаблона страницы Пользовательский плагин – CSS работает, JS не Мне нужно только захватывать сообщения с определенного диапазона дат на основе пользовательского поля даты из настраиваемого типа сообщений, созданного с помощью дополнительных настраиваемых полей Как добавить атрибут title в архивные элементы wp_query в виде метода виджета breaks customizer Условия использования конвертировать xml в продукт woocommerce Как сделать тему css первой, а не плагин css

Почему current_user_can ('edit_comment') всегда верно?

Я всегда получаю TRUE для current_user_can('edit_comment'); на двух разных установках WordPress (4.2.2 и 4.2.4) независимо от роли пользователя. Даже когда пользователь вышел из системы.

Я проверил это на чистой WP-установке и получил тот же результат.

Почему это должно быть?

Обратите внимание, как это сингулярно? Комментарий, а не комментарии?

Эта возможность не предназначена для проверки того, может ли пользователь редактировать любые произвольные комментарии. Он может только проверить, может ли пользователь редактировать один конкретный комментарий и правильный способ его вызова – current_user_can( 'edit_comment', $comment_id ) .

К сожалению, второй аргумент отсутствует в сигнатуре функции current_user_can() и крайне неочевидно, что некоторые возможности должны быть проверены таким образом.

Я думаю, чтобы отладить этот сценарий, вы должны сначала попробовать, чтобы получить все возможности для текущего пользователя и посмотреть, действительно ли в нем существует edit_comment или нет –

 $user_id = get_current_user_id(); $userdata = get_userdata( $user_id ); $allcaps = $userdata->allcaps; $output = print_r( $allcaps, true ); echo '<pre>' . $output . '</pre>'; 

Кроме того, проверьте, подходит ли moderate_comments для вашего требования.