Здравствуйте!
После обновления на версию 16.26.12 столкнулись с проблемой, что пользователь с правами администратора не может редактировать публикацию в фронтенд. Кнопка редактирования есть, после ее нажатия перекидывает в редактирование поста, однако при нажатии Опубликовать выходит сообщение "Вы не можете редактировать эту публикацию".
В настройках плагина в пункте "Фронтенд редактирование" стоит галочка для Администраторы.
Сравнил новый pluginswp-recalladd-onpublicpostfunctions-ajax.php и старый и оказалось, что в строке 168 появился код:
if(!current_user_can('author')){ wp_send_json( [ 'error' => __( 'Вы не можете редактировать эту публикацию', 'wp-recall' ) ] ); }
То есть, правильно ли я понял, что теперь только автор поста может его редактировать?
Удалить эту часть или где-то появилась настройка, которая это отключает?
Добавил роли Администратор дополнительную роль Автор и ошибка ушла.
Но как-то все-таки не логично получается, у роли Администратор же полные права и должно все работать без нагромождения дополнительных ролей. Поидее в этом куске кода тогда нужно добавить проверку на Администратора, но она то идет чуть ниже:
if($data_post_id){ if(!apply_filters('rcl_is_can_preview_post', false, $data_post_id)){ wp_send_json( [ 'error' => __( 'Вы не можете редактировать эту публикацию', 'wp-recall' ) ] ); } }
В этой части, как я понял, как раз и идет проверка на Администратора и автора поста. Зачем тогда еще одна проверка на роль Автора? Как-то избыточно получается
насчет избыточности согласен, но это вопрос к периодическим проверкам со стороны безопасников в репозитории и если они сказали надо добавить, то надо добавить
изначально этой проверки не было и может добавили неудачно, я ведь уже несколько лет правки не тестирую, поэтому такое может появится
просто удалите, ну или предложите рабочий вариант, поправлю в плагине, мне не жалко
Судя по логике, что кнопку редактирования поста могут видеть Автор, Редактор или Администратор (смотря какие настройки установлены в пункте "Фронтенд редактирование"), то сделал у себя вот так:
if(!current_user_can('author') && !current_user_can('administrator') && !current_user_can('editor')){ wp_send_json( [ 'error' => __( 'Вы не можете редактировать эту публикацию', 'wp-recall' ) ] ); }
Просто получается, что привязка current_user_can('author') идет к конкретной роли, а не к правам и Администратор не обязательно Автор, как и Редактор не обязательно Автор
У меня теперь у любого пользователя при нажатии Опубликовать выходит сообщение "Вы не можете редактировать эту публикацию". Исчезает ошибка только если конкретному пользователю сменить роль на автора. Изменение роли всех новых пользователей на автора помогло лишь частично - теперь после регистрации они могут публиковать посты, но гости по прежнему не могут, хотя до обновления той проблемы не было.