Я не хотел у себя давать права "автора" всем пользователям, т.к. некоторые публикуют записи давно и им удобнее делать это через админку (как и мне) Но вот "новые" пользователи зачастую пугаются админки, да и нечего там ВСЕМ делать. Из-за этого я не использовал аддон фронтэнд публикации.
Но сегодня я допер как сделать работу фронтэнд публикации + редактирования, при этом оставив у пользователей права "подписчик"
Что я сделал:
1. С помощью плагина "Редактор ролей пользователей" выставил права подписчикам:
- Редактировать опубликованные статьи
- Изменять статьи
- Загружать файлы
2. В настройках аддона публикации выставил:
- Публикация разрешена: Гостям и пользователям
- Перенаправление на страницу: Не выбрано
- Модерация публикаций: Отправлять на модерацию
- Фронтэнд редактирование: Убрал все галки, т.к. авторы и я редактируем в админке, нам там удобнее
3. Создал шаблон страницы для формы публикации и заменил там:
<?php the_content(); ?>
на
<?php if(is_user_logged_in()) the_content(); else echo "Авторизуйся!"; ?>
4. На странице single.php вывел кнопку для редактирования с помощью
<?php // Сложное условие, может можно проще... Проверяем что: // 1. пользователь залогинен и // 1.1 он является автором и он просматривает свой пост // или // 1.2 он является администратором // И выводим кнопку с ссылкой на редактирование поста в админку if( is_user_logged_in() AND ( (user_can( $user_ID, 'author' ) AND $user_ID == $post->post_author) OR (user_can( $user_ID, 'administrator' )) ) ){ ?> <p class="post-edit-button"> <a object-id="none" href=" <?php echo "/wp-admin/post.php?post=".$post->ID."&action=edit"; ?>"> <i class="fa fa-pencil-square-o"></i> </a> </p> <?php } // Иначе выводим стандартную кнопку на редактирование поста во фронтэнде elseif(is_user_logged_in() AND $user_ID == $post->post_author) echo rcl_edit_post_button_html($post->ID); ?>
Но с таким подходом будет 1 проблема: для админа будут отображаться 2 кнопки редактирования. Я решил эту проблему избавившись от стандартной кнопки, которая автоматически добавляется к начало статьи.
Что бы убрать стандартную кнопку редактирования записи из начала статьи, нужно добавить в functions.php вашей темы:
remove_filter('the_content','rcl_get_edit_post_button',999);
Как итог:
В пункте 2 мы разрешили публикацию с фронтэнд даже гостям, лично мне этого ненужно и я в пункте 3 отредактировал шаблон страницы с формой публикации, в результате чего гости вместо формы публикации будут видеть "авторизуйся" - все остальные, включая админов, авторов и т.п. - смогут публиковать записи
Администрация и авторы при клике по кнопке "Редактировать" на странице записи попадают в админку (что и требовалось) Все остальные попадают на фронтэнд страницу редактирования
Если вдруг кто-то так же как и я не выдает права автора пользователям при регистрации, а оставляет его в качестве "Подписчика" то для того что бы у Подписчиков была возможность фронтэнд редактирования записи используйте следующий фильтр в functions.php вашей темы:
В данном примере мы фильтруем опцию front_editing где есть возможность выбрать только админа, редактора и автора, что, вроде, является уровнями доступа 10, 8 и 2. А у подписчика уровень доступа 1, вот данный фильтр и заменяет значение опции на 1. В базу ничего не пишется, так что при отключении фильтра будут использоваться значения из опций
Почему-то код не убирает кнопку... Что-то сейчас изменилось в плагине?
rcl_get_edit_post_button давно нет в плагине. Я вам ответил на форуме.