/ Плагины / Создание плагина Wordpress

Создание плагина WordPress

HIT

29.07.2016

2643

Разбираем моменты создания плагина WordPress.

Создание плагина, основы

В директории wp-content/plugins/ создаем папку с названием плагина.
В ней создаем файл .php с названием плагина (не обязательно). В начале файла помещаем информацию:

<?php
/*
Plugin Name: Site slider
Description: Плагин создает слайдер.
Version: 1.0
Author: Opttour
Author URI: https://opttour.ru/
Plugin URI:
*/
Обязательно в начале php файлов плагина вставляем строку
if ( ! defined( ‘ABSPATH’ ) ) { exit; }
Это защитит файл от прямого доступа через URL

Далее подключаем скрипты и стили. Можно создавать для этого отдельные папки, можно прямо в корень.

function addsiteslider() {  
  wp_enqueue_script( 'siteslider-scripts', plugins_url('/site-slider.js', __FILE__), array('jquery'), null, true );
  wp_enqueue_style( 'siteslider-style', plugins_url('/site-slider.css', __FILE__) );
}  

add_action( 'wp_footer', 'addsiteslider' );

Далее помещаем функции относящиеся к данному плагину.

Если при подключении скрипта, указать порядковый номер, то можно контролировать приоритет вывода

add_action( 'wp_footer', 'addsitegreeting', 5 );

Можно создать файлы включения и в них делать подробный функционал, либо разбивать их по назначению

require __DIR__ . '/functions.php';

Ссылка на изображения плагина

<img src="<?php echo plugins_url( 'images/x-image-wt.gif', __FILE__ ); ?>" alt="close">

Другие функции вывода относительных путей WordPress:

home_url Home URL http://www.example.com
site_url Site directory URL http://www.example.com or http://www.example.com/wordpress
admin_url Admin directory URL http://www.example.com/wp-admin
includes_url Includes directory URL http://www.example.com/wp-includes
content_url Content directory URL http://www.example.com/wp-content
plugins_url Plugins directory URL http://www.example.com/wp-content/plugins
theme_url Themes directory URL http://www.example.com/wp-content/themes
wp_upload_dir() Upload directory URL (returns an array) http://www.example.com/wp-content/uploads

Включить шаблон из плагина

Если мы создаем плагин таксономии (например) и хотим чтобы у этой таксономии был специфический шаблон. Нужно поместить шаблон (taxonomy-label.php) в плагин и инициализировать его

function labeltaxonomies_template($template){
		
            if ( is_tax('label') ) {
                    $template = plugin_dir_path( __FILE__ ) . '/taxonomy-label.php';
            }

        return $template;
    }
add_filter('template_include','labeltaxonomies_template');

Условия внутри плагина

Условия типа if( !is_front_page() || !is_home() ) внутри плагина работать не будут, т.к. в момент подключения плагина еще не сформирован объект $wp_query и данные проверки будут выдавать wp_debug.

Чтобы проверки начали работать нужно добавить следующий код

function addsitehovergallery()  { 
	$d = is_home();
	if( !is_home() ) {
  wp_enqueue_script( 'hovergallery', plugins_url('/site-hovergallery.js', __FILE__), array('jquery'), null, true );
  wp_enqueue_style( 'hovergallery', plugins_url('/site-hovergallery.css', __FILE__) );
	}		
}  

add_action( 'wp_footer', 'addsitehovergallery' );

Бывает так, что не отключаются плагин при данном условии. Это происходит из-за того что основной запрос изменен таки образом что он уже не подпадает ни под is_home ни под is_front_page. Чтобы этого не случалось после изменения запроса нужно не забывать вставлять wp_reset_query();
А чтобы выявить это, нужно в шапке и подвале поставить проверки и посмотреть сохранилась ли определение основного запроса:

<?php if( is_home() ) { echo 'HOME';} ?>
<?php if( is_front_page() ) { echo 'FRONT PAGE';} ?>
[site-socialshare]
  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Создание плагина WordPress
Количество товара
Рекомендации для васКоличество товараOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.