Это вторая часть создания плагина случайной цитаты, но на этот раз с пользовательскими типами постов.
Во второй версии плагина случайных кавычек мы продвигаемся немного дальше и используем еще несколько инструментов и функций. Пользовательские типы сообщений доступны начиная с WordPress v3.0. Они позволяют разработчикам добавлять различные типы контента в свои плагины и темы, и с этим вы можете легко расширить функциональность CMS WordPress.
Вы можете найти первую версию плагина здесь . Если вы только начинаете с разработки плагинов или хотите быстрое обновление, рекомендуется сначала прочитать это.
1. Основные данные
Это данные, необходимые для каждого плагина. Простые вещи, такие как автор, название плагина, описание и так далее.
| 01 02 03 04 05 06 07 08 09 10 | <?php /* Plugin Name: Adam’s Random Quote Version: 2.0 Plugin URI: http://wp.tutsplus.com Description: Loads a Random Quote from custom post types Author: Adam Burucs Author URI: http://wp.tutsplus.com */ ?> | 
2. Зарегистрируйте пользовательский тип сообщения

 Прежде чем мы сможем использовать произвольный тип сообщения, мы должны установить его.  В массиве меток необходима форма имени в единственном и множественном числе.  Публичный переключатель, установленный в значение true, позволяет пользователям использовать тип записи для администратора.  has_archive устанавливает возможность использовать архив типов has_archive . 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | <?php add_action( ‘init’, ‘random_quote’ ); function random_quote() {     register_post_type( ‘random_quote’,         array(             ‘labels’ => array(                 ‘name’ => __( ‘Random Quotes’ ),                 ‘singular_name’ => __( ‘Random Quote’ )             ),             ‘public’ => true,             ‘has_archive’ => true,         )     ); } ?> | 
3. Создание интерфейса администратора
  С помощью функции project_edit_columns и project_custom_columns мы можем создать модифицированный интерфейс администратора для пользовательского типа записи, используя поля Person и Quote (переопределяя заголовок и описание).  Обе эти две функции необходимы для выполнения работы. 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php add_filter(«manage_edit-random_quote_columns», «project_edit_columns»); function project_edit_columns($columns) {     $columns = array(         «cb» => «<input type=\»checkbox\» />»,         «title» => «Person»,         «description» => «Quote»,     );     return $columns; } add_action(«manage_posts_custom_column», «project_custom_columns»); function project_custom_columns($column) {     global $post;     switch ($column) {         case «description»:             the_excerpt();             break;     } } ?> | 
Это изображение финального плагина.

4. Получить одну случайную цитату из базы данных

  С классом WP_Query мы можем получить один случайный элемент из пользовательских сообщений.  Поскольку мы получаем только один элемент, нам не нужен стандартный цикл.  Установка этих трех аргументов является обязательной.  Переменная $quo помогает создать строку, основанную на кавычке и ее авторе, которая может сгенерировать пример следующим образом: 
«Я никогда не думаю о будущем. Это приходит достаточно скоро».
~ Альберт Эйнштейн
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 | <?php function ab_arq_generate() {     // Retrieve one random quote     $args = array(         ‘post_type’ => ‘random_quote’,         ‘posts_per_page’ => 1,         ‘orderby’ => ‘rand’     );     $query = new WP_Query( $args );     // Build output string     $quo = »;     $quo .= $query->post->post_title;     $quo .= ‘ said «‘;     $quo .= $query->post->post_content;     $quo .= ‘»‘;     return $quo; } ?> | 
5. Присвоение цитаты элементу описания блога
Чтобы прикрепить сгенерированную кавычку к ее месту, мы используем вспомогательную функцию, после чего переопределяем фильтр по умолчанию (bloginfo).
| 01 02 03 04 05 06 07 08 09 10 | <?php function ab_arq_change_bloginfo( $text, $show ) {     if( ‘description’ == $show ) {         $text = ab_arq_generate();     }     return $text; } add_filter( ‘bloginfo’, ‘ab_arq_change_bloginfo’, 10, 2 ); ?> | 
6. Окончательный код
Вот что мы сделали, только один файл.
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <?php /* Plugin Name: Adam’s Random Quote Version: 2.0 Plugin URI: http://burucs.com Description: Loads a Random Quote from custom post types Author: Adam Burucs Author URI: http://burucs.com */ // Register custom post type add_action( ‘init’, ‘ab_arq_random_quote’ ); function ab_arq_random_quote() {     register_post_type( ‘random_quote’,         array(             ‘labels’ => array(                 ‘name’ => __( ‘Random Quotes’ ),                 ‘singular_name’ => __( ‘Random Quote’ )             ),             ‘public’ => true,             ‘has_archive’ => true,         )     ); } // Create admin interface add_filter(«manage_edit-random_quote_columns», «ab_arq_project_edit_columns»); function ab_arq_project_edit_columns($columns) {     $columns = array(         «cb» => «<input type=\»checkbox\» />»,         «title» => «Person»,         «description» => «Quote»,     );     return $columns; } add_action(«manage_posts_custom_column», «ab_arq_project_custom_columns»); function ab_arq_project_custom_columns($column) {     global $post;     switch ($column) {         case «description»:             the_excerpt();             break;     } } // Main function to get quotes function ab_arq_generate() {     // Retrieve one random quote     $args = array(         ‘post_type’ => ‘random_quote’,         ‘posts_per_page’ => 1,         ‘orderby’ => ‘rand’     );     $query = new WP_Query( $args );     // Build output string     $quo = »;     $quo .= $query->post->post_title;     $quo .= ‘ said «‘;     $quo .= $query->post->post_content;     $quo .= ‘»‘;     return $quo; } // Helper function function ab_arq_change_bloginfo( $text, $show ) {     if( ‘description’ == $show ) {         $text = ab_arq_generate();     }     return $text; } // Override default filter with the new quote generator add_filter( ‘bloginfo’, ‘ab_arq_change_bloginfo’, 10, 2 ); ?> | 
7. Резюме
Всего за несколько дополнительных шагов мы создали гораздо более гибкую систему хранения с использованием пользовательских сообщений, однако, обратите внимание, что если вы деактивируете или удалите плагин, цитаты (пользовательские сообщения) останутся в базе данных WordPress. Если вы хотите, чтобы они были удалены, вы должны соответствующим образом расширить этот плагин.