Публикация в группе: Кастомизация WP-Recall и Wordpress

Я не хотел у себя давать права "автора" всем пользователям, т.к. некоторые публикуют записи давно и им удобнее делать это через админку (как и мне) Но вот "новые" пользователи зачастую пугаются админки, да и нечего там ВСЕМ делать. Из-за этого я не использовал аддон фронтэнд публикации.

Но сегодня я допер как сделать работу фронтэнд публикации + редактирования, при этом оставив у пользователей права "подписчик"

Что я сделал:

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 отредактировал шаблон страницы с формой публикации, в результате чего гости вместо формы публикации будут видеть "авторизуйся" - все остальные, включая админов, авторов и т.п. - смогут публиковать записи
Администрация и авторы при клике по кнопке "Редактировать" на странице записи попадают в админку (что и требовалось) Все остальные попадают на фронтэнд страницу редактирования

8

Автор публикации

не в сети 4 часа

Preci

1 493
Telegram: https://t.me/preci_123
Комментарии: 495Публикации: 83Регистрация: 11-11-2014Продаж/Покупок: 0/0