Статьи

Создание модуля уведомления об отказе от ответственности для блогов с несколькими авторами

Мой друг ведет блог с несколькими авторами на WordPress.

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

Я уверен, что вы согласитесь, что редактирование и добавление отказа от ответственности в каждом посте, сделанном приглашенными авторами, кажется сложной задачей.

В этой статье мы создадим простой плагин Disclaimer Notice, который будет иметь страницу параметров, на которой администратор сайта может добавить disclaimer text об disclaimer text который автоматически добавляется непосредственно перед или после публикации содержимого.

Разработка плагинов

Чтобы начать разработку плагина, нам нужно включить заголовок плагина в PHP-файл плагина.

Без заголовка WordPress не распознает плагин.

 <?php /* Plugin Name: Disclaimer Manager Plugin URI: http://sitepoint.com Description: Easy Disclaimer Manager for Multi-author blogs. Version: 1.0 Author: Agbonghama Collins Author URI: http://w3guy.com License: GPL2 */ 

Чтобы начать строить страницу настроек для плагина; Сначала мы добавим страницу подменю в меню «Настройки» с помощью функции add_options_page, размещенной в функции, зарегистрированной в admin_menu .

 // Add the admin options page add_action( 'admin_menu', 'dm_settings_page' ); function dm_settings_page() { add_options_page( 'Disclaimer Manager', 'Disclaimer Manager', 'manage_options', 'disclaimer-manager', 'dm_options_page' ); } 

Аргумент, передаваемый add_options_page() , выглядит следующим образом:

  • Disclaimer Manager : текст, отображаемый в тегах заголовка страницы при выборе меню.
  • Disclaimer Manager : текст, который будет использоваться для меню.
  • manage_options : возможность, необходимая для отображения этого меню пользователю.
  • disclaimer-manager : имя пули для ссылки на это меню.
  • dm_options_page : функция, которая dm_options_page для вывода страницы настроек плагина.

Ниже приведен код для функции обратного вызова dm_options_page которая будет отображать страницу настроек.

 // Draw the options page function dm_options_page() { ?> <div class="wrap"> <?php screen_icon(); ?> <h2> Disclaimer Manager for Authors </h2> <form action="options.php" method="post"> <?php settings_fields( 'disclaimer_manager_options' ); ?> <?php do_settings_sections( 'disclaimer-manager' ); ?> <?php submit_button(); ?> </form> </div> <?php } 

API настроек WordPress используется для создания и управления формой настроек.

Функция settings_fields в dm_options_page() выше выводит поля nonce, action и form для страницы настроек, в то время как do_settings_sections() распечатывает все разделы настроек, добавленные на определенную страницу настроек.

Ниже приведен полный код API настроек для страницы настроек.

 // Register and define the settings add_action( 'admin_init', 'dm_admin_init' ); function dm_admin_init() { register_setting( 'disclaimer_manager_options', 'disclaimer_manager_options', '' ); add_settings_section( 'dm_main', 'Plugin Settings', '', 'disclaimer-manager' ); add_settings_field( 'dm_textarea-id', 'Enter Disclaimer Text', 'disclaimer_text_textarea', 'disclaimer-manager', 'dm_main' ); add_settings_field( 'dm_select-id', 'Disclaimer Position', 'disclaimer_text_position', 'disclaimer-manager', 'dm_main' ); } // Display and fill the form field function disclaimer_text_textarea() { // get option 'disclaimer_text' value from the database $options = get_option( 'disclaimer_manager_options' ); $disclaimer_text = $options['disclaimer_text']; // echo the field echo "<textarea rows='8' cols='50' id='disclaimer_text' name='disclaimer_manager_options[disclaimer_text]' >$disclaimer_text</textarea>"; } function disclaimer_text_position() { // get option 'disclaimer_position' value from the database $options = get_option( 'disclaimer_manager_options' ); $disclaimer_position = $options['disclaimer_position']; echo '<select name="disclaimer_manager_options[disclaimer_position]">'; echo '<option value="top"' . selected( $disclaimer_position, 'top' ) . '>Top</option>'; echo '<option value="bottom"' . selected( $disclaimer_position, 'bottom' ) . '>Bottom</option>'; echo '</select>'; } 

Обратите внимание: register setting() регистрирует настройку.

add_settings_section() создает разделы настроек — группы настроек, которые вы видите на страницах настроек WordPress с общим заголовком.

add_settings_field() регистрирует поле настроек на странице настроек и в разделе.

get_option() извлекает значения формы настроек из базы данных, а update_option() сохраняет значения формы в базе данных.

Мы закончили создание страницы настроек для плагина.

Ниже приведен скриншот страницы настроек плагина.

Плагин уведомления об отказе от ответственности - Изображение 1

Функция add_disclaimer_to_post как следует из ее названия, добавляет текст «Disclaimer» вверху или внизу каждого поста, как определено на странице настроек плагина.

 function add_disclaimer_to_post( $content ) { $options = get_option( 'disclaimer_manager_options' ); // get disclaimer text form DB $disclaimer_text = $options['disclaimer_text']; // get disclaimer position from DB $disclaimer_position = $options['disclaimer_position']; // ensure we are in a post and not a page if ( is_single() ) : // if disclaimer position is set to top { if ( $disclaimer_position == 'top' ) { $content = $disclaimer_text . $content; } // if disclaimer position is set to bottom if ( $disclaimer_position == 'bottom' ) { $content .= $disclaimer_text; } } endif; return $content; } 

Позвольте мне объяснить, что делает код выше.

«Текст $disclaimer_text $disclaimer_position отказе» и его положение извлекаются из базы данных и сохраняются в переменные $disclaimer_text и $disclaimer_position .

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

Следующие два условных заявления добавляют заявление об отказе в верхнюю или нижнюю часть содержимого публикации в зависимости от результата $disclaimer_position .

Чтобы заставить функцию работать, нам нужно подключить ее к фильтру the content (используется для фильтрации содержимого сообщения после его извлечения из базы данных и до его вывода на экран).

 add_filter( 'the_content', 'add_disclaimer_to_post' ); 

Вуаля! Мы закончили кодировать плагин Disclaimer.

Вот скриншот плагина в действии:

Плагин уведомления об отказе от ответственности Изображение 2

Вывод

Чтобы лучше понять, как был построен плагин и как вы можете реализовать его на своем сайте WordPress, загрузите плагин .

Если вы ищете расширенный плагин для отказа от ответственности с такими функциями, как:

  • Возможность выбрать авторов, которые будут иметь отказ от ответственности или уведомление, отображаемое в их сообщении.
  • Встроенный редактор для добавления стилей CSS для текста / уведомления Disclaimer и многое другое.

Возьмите улучшенную версию из каталога плагинов WordPress .

Дайте мне знать ваши мысли в комментариях.