Как создать свой собственный плагин WordPress

Опубликовано: 2016-07-13

Создание плагина для WordPress может показаться огромным делом. В некоторых случаях это действительно так — некоторые плагины могут быть невероятно сложными. Но в зависимости от функциональности, которую вы хотите добавить, многие из них на самом деле довольно просты в создании. Создание плагина может быть выполнено быстро с некоторым базовым пониманием того, как все это работает.

Куда идут плагины?

структура папок вордпресс

Перед началом разработки полезно знать, к чему относятся плагины. Давайте посмотрим на структуру папок WordPress в основных каталогах приложений. Внутри папки wp-content вы увидите каталог плагинов. Здесь будут жить все ваши отдельные плагины.

Плагины в этой папке могут быть отдельными файлами или в подкаталогах. Для небольших плагинов обычно требуется только один файл .php. Сложные плагины могут иметь несколько типов файлов (возможны HTML, CSS и JavaScript). Создание подкаталога полезно для размещения различных файлов вместе с функциями плагина .php.

путь-к-файлу-плагина-плагина-wordpress

Действия и фильтры

Прежде чем приступить к созданию плагина, полезно знать некоторые основы, чтобы начать работу. Когда вы начинаете кодировать свои собственные плагины, хорошо бы начать с изучения того, как работают действия и фильтры. Знание основ будет полезно, и если у вас возникнут дополнительные вопросы по этому поводу, WordPress Codex станет отличным ресурсом.

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

Метаинформация невероятно важна, и это также информация, которая сообщает WordPress подробности о плагине. Плагины могут быть установлены, удалены, активированы и деактивированы. Технически все, что вам нужно, это имя плагина для WordPress, чтобы сделать ваш файл плагином. Однако хорошей практикой является предоставление другой информации, поскольку она будет полезна вам и вашим пользователям.

<?php

/**

* Plugin Name: Example Plugin

* Plugin URI: http://mysite.com/

* Description: A brief description about your plugin.

* Version: 1.0 (or whatever current version your plugin is on)

* Author: Plugin Author's Name

* Author URI: Author's website

* License: A "Slug" license name e.g. GPL12

*/

Очень простой плагин

Начать с малого — хороший способ облегчить создание плагинов. Давайте создадим очень простой пример. Действия и фильтры заставляют вещи происходить, поэтому давайте добавим строку текста после всех сообщений, чтобы проверить.

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

Сначала создайте новый файл и убедитесь, что он находится в правильном месте. Скопируйте и вставьте этот код в основной файл плагина и сохраните его. Это вставляется после метаинформации.

add_action( 'the_content', 'test_example_text' );

function test_example_text ( $content ) {
    return $content .= '<p>This is my first plugin!</p>';
}

Это пример жесткой работы крючка. При подключении к действию the_content это работает, когда WordPress отображает контент публикации. WordPress вызывает функцию test_example_text , которая определена ниже add_action call .

Увидеть плагин в действии

Вы, вероятно, делали это раньше, но когда вы войдете в панель администратора WordPress, вы увидите параметр плагина слева. Наш плагин появляется, и теперь его нужно активировать. После активации он появляется в конце поста.

как создать-wordpress-плагин-плагин-список

Как собрать первый плагин для wordpress

Более сложный плагин

Итак, этот пример демонстрирует основы работы плагинов, но что, если вы хотите сделать что-то более полезное? Пользовательские типы сообщений довольно часто используются в пользовательском дизайне сайта, поэтому давайте начнем с них. Существуют существующие плагины, которые вы можете использовать, но создание их с нуля — хороший способ упростить разработку плагинов.

Что такое настраиваемый тип записи в WordPress?

Страницы и сообщения — самые популярные типы контента в WordPress, но что, если вы хотите что-то более конкретное? Страницы и сообщения могут быть слишком общими в некоторых обстоятельствах, поэтому настраиваемый тип сообщений становится удобным. Хорошим примером является портфолио с пользовательским типом поста. Идея состоит в том, чтобы создать обычный пост с другим значением типа поста, прикрепленным к нему.

Как создать сайт-портфолио на WordPress

Наличие страницы портфолио на веб-сайте может быть использовано для очень многих вещей. По определению, это то, что используется для хранения таких материалов, как бумаги, карты, рисунки, фотографии и т. д. Портфолио с точки зрения финансов ref...

Вы можете называть свои пользовательские типы сообщений как хотите. Например, если вы ведете кулинарный сайт, вы можете создать удобный тип поста с рецептами. Этот тип сообщения может иметь различные настраиваемые поля со своей собственной структурой настраиваемых категорий.

Создание пользовательских типов сообщений

Первое, что вам нужно сделать, это создать пользовательский тип записи. Используя ту же файловую структуру, что и выше, давайте добавим нашу папку и файл .php. Предполагая, что метаинформация создана, мы добавим нашу функциональность после метаблока.

Мы собираемся создать плагин для пользовательского типа записей под названием «Рецепты», чтобы продемонстрировать основы создания более сложных плагинов.

Базовая версия

Если вы посмотрите на приведенный ниже фрагмент, в начале все довольно просто. Мы увидим пользовательский тип сообщения в левом меню, чтобы убедиться, что это работает. Метод register_post_type() используется в функции, которая подключается к действию init . Есть два аргумента: пользовательский тип записи и массив аргументов.

function recipe_custom_post_type() {
	register_post_type( 'recipe', array( 'public' => true, 'label' => 'Recipes' ) );
}
add_action( 'init', 'recipe_custom_post_type' );

как построить-wordpress-plugin-пользовательский-тип-сообщения-01

Расширенная версия

Эта базовая версия плагина действительно будет работать, однако для того, чтобы сделать его действительно замечательным, требуется больше функциональности. Например, ярлыки по-прежнему гласят: «Добавить новую публикацию». Мы хотим, чтобы это было более специфичным для рецепта; в конце концов, именно поэтому мы не используем простой пост. Настройки могут быть выполнены с использованием свойства labels.

как построить-wordpress-плагин-добавить-новый-пост

Теперь давайте запустим то, что мы только что сделали, и воспользуемся этим:

add_action( 'init', 'recipe_custom_post_type' );
add_filter( 'post_updated_messages', 'recipes_messages' );

function recipe_custom_post_type() {
	$labels = array(
		'name'               => 'Recipes',
		'singular_name'      => 'Recipe',
		'menu_name'          => 'Recipe',
		'name_admin_bar'     => 'Recipe',
		'add_new'            => 'Add New',
		'add_new_item'       => 'Add New Recipe',
		'new_item'           => 'New Recipe',
		'edit_item'          => 'Edit Recipe',
		'view_item'          => 'View Recipe',
		'all_items'          => 'All Recipes',
		'search_items'       => 'Search Recipes',
		'parent_item_colon'  => 'Parent Recipes:',
		'not_found'          => 'No recipes found.',
		'not_found_in_trash' => 'No recipes found in Trash.'
	);

	$args = array( 
		'public'      => true, 
		'labels'      => $labels,
		'rewrite'		=> array( 'slug' => 'recipe' ),
		'has_archive'   => true,
		'menu_position' => 20,
		'menu_icon'     => 'dashicons-carrot',
		'taxonomies'		=> array( 'post_tag', 'category' ),
		'supports'      => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments' )
	);
    	register_post_type( 'recipe', $args );
}

function recipes_messages( $messages ) {
	$post = get_post();

	$messages['recipe'] = array(
		0  => '',
		1  => 'Recipe updated.',
		2  => 'Custom field updated.',
		3  => 'Custom field deleted.',
		4  => 'Recipe updated.',
		5  => isset( $_GET['revision'] ) ? sprintf( 'Recipe restored to revision from %s',wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
		6  => 'Recipe published.',
		7  => 'Recipe saved.',
		8  => 'Recipe submitted.',
		9  => sprintf(
			'Recipe scheduled for: <strong>%1$s</strong>.',
			date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) )
		),
		10 => 'Recipe draft updated.'
	);

	return $messages;
}


как создать плагин wordpress, добавить новый рецепт

Видите, как текст вверху теперь выглядит как «Добавить новый рецепт»? Мы сделали это, настроив «добавить новый элемент» с желаемым текстом.

как создать WordPress-плагин-элементы пользовательского интерфейса

как создать-плагин-wordpress-reciep-posts

Здесь происходит много всего, и при работе с аргументами все становится довольно подробно. Визуально очевидным является свойство supports . Здесь мы объявили, что будут включены заголовок, редактор, автор, миниатюра, выдержка, настраиваемые поля и комментарии. Они отображаются в пользовательском интерфейсе администратора, а также в некоторых частях внешнего интерфейса. Свойство таксономий позволяет назначать пользовательские таксономии пользовательскому типу записи.

как построить-wordpress-плагин-UI-новый

Сообщения взаимодействия типа публикации

Всякий раз, когда вы сохраняете, удаляете, ищете и т. д., вы получаете сообщение по умолчанию. В нашей функции recipes_messages есть список этих сообщений. Определение массива для пользовательского типа сообщений с соответствующими сообщениями гарантирует, что все будет читаться так, как вам нравится для пользовательского типа сообщений. Формулировка выглядит очень специфичной для рецепта, поэтому она хорошо сочетается с пользовательским типом сообщения.

как собрать-текст-рецепта-плагина-wordpress

После того, как вы закончите свой плагин, вы можете опубликовать его в каталоге плагинов WordPress, чтобы другие тоже могли его загрузить. Если это так, включение readme.txt полезно для тех, кто ищет плагин, подобный вашему. По сути, этот файл будет включать ваше имя и то, что делает плагин, но вы также можете включить подробную информацию о каждой версии и особенности обновлений.

Как видите, плагины могут быть очень простыми или сложными. Создание плагина не так сложно, как может показаться на первый взгляд, и это хорошая привычка при разработке сайтов на WordPress. Они обеспечивают простую организацию и возможность повторного использования на нескольких сайтах, что делает вашу разработку WordPress более эффективной.

как создать-wordpress-plugin-ebook-cta