Как написать плагин для WordPress-1

В предыдущих статьях я, вкратце, рассказал как расширить стандартный функционал темы в файле functions.php и styles.css, записывая туда дополнительные стили и функции. Там же я указал недостатки такого метода и в следующей статье «Создание дочерней темы в WordPress» рассказал как эти недостатки устранить.

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

Да, вот наконец, логично мы подошли к теме создания плагина в CMS WordPress.

Итак, что же это за зверь такой — плагин?

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

Как всегда начнем с простого и на примере.

Нам нужно в стандартной теме, не имеющей всяких «наворотов», к новости ( посту ), добавлять ссылку на видео, если таковое имеется, где — нибудь на YouTube.

Лирическое отступление для тех, кто более опытней и скажет: «Какую-то ересь толкает».

Это пример по созданию плагина, это помощь тем, кто начинает знакомство с WP и хочет знать больше. Это не инструкция по созданию крутого плагина как WPML. Просто азы и пример.

Лирическое отступление закончено.

1. В файловом менеджере открываем папку в папке wp-content/Plugins в ней создадим папку с названием «myplugin», в которой создадим файл с названием, к примеру, plugin.php. Откроем его в редакторе и напишем (как обычно для заголовков в админке в /* комментариях */) следующее:


<?php 
/* 
Plugin Name: My Cool Plugin
Plugin URI: http://somewere.com
Description: Some short description for My Cool Plugin;
Author: Amazing programmer
Author URI: http://www.somewere.com Version: 1.0
*/
?>

затем сохраним изменения в файле, зайдем в админку в раздел «Плагины», как говориться результат лицом.

создание плагина wordpress

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

После знака */ введем код:


function My_Cool_Plugin_field_box() {
add_meta_box( 'My_Cool_plugin_section', 'Видео к новости', 'My_Cool_Plugin_fields','post' );
}

add_action('add_meta_boxes', 'My_Cool_Plugin_field_box'); 

function My_Cool_Plugin_fields(){
$post = get_post();

$url = get_post_meta($post->ID, 'post_video_url', true);
echo '<input id="video_url" name="video_url" size="35" type="text" value="'.$url.'" placeholder="https://youtube.com" />';
}

Немного пояснений:

add_action('add_meta_boxes', 'My_Cool_Plugin_field_box');

add_meta_boxes — служебная функция Вордпрес, которая добавляет дополнительные блоки (meta box) на страницы редакции постов, т.е. там где мы редактируем страницу или новость, около текстового редактора.

$post = get_post();

— получим данные о посте (нашей новости) в массив.

$url = get_post_meta ($post->ID, 'post_video_url', true);

— получим нашу опцию post_video_url ( значение ссылки ).
My_Cool_Plugin_field_box — имя нашей функция, которая сработает во время работы функции add_meta_boxes. А сработает она следующим образом:

как создать плагин вордпресс

Добавит секцию под названием My_Cool_plugin_section с заголовком Видео к новости с параметром callback — имя функции которая что-то сделает внутри нашей секции, т.е., в нашем случае — функция My_Cool_Plugin_fields выведет текстовое поле для ввода/отображения ссылки на видео, которую мы введем для нашего видео.
Ну и post, укажет в какой области редактирования выводить нашу секцию. В данном случае в области редактирования новости. В разделе редакции страницы вы её не увидите.

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

Запишем еще одну функцию.


function My_Cool_Plugin_Save_VideoUrl( $post_id ) {

 $url = sanitize_text_field( $_POST['video_url'] );

 update_post_meta( $post_id, 'post_video_url', $url );
}

add_action( 'save_post', 'My_Cool_Plugin_Save_VideoUrl' );

Снова поясним:
во время запуска события save_post, это когда мы нажали на кнопку сработает наша функция My_Cool_Plugin_Save_VideoUrl, которая сохранит нашу ссылку на видео в базу, и привяжет к нашей новости.

sanitize_text_field( $_POST['video_url'] )

— примет значение нашего поля со ссылкой из глобально массива $_POST, и от HTML символов, переносы строк, оставив при этом чистый текст, чтобы потом его можно было вставить в базу.

update_post_meta( $post_id, 'post_video_url', $url )

— если нет, создаст/обновит опцию с именем post_video_url со значением нашей ссылки и с ID нашей новости.

Итак полная версия кода для админ-части такая:


<?php 

/*

Plugin Name: My Cool Plugin

Plugin URI: http://somewere.com

Description: Some short description for My Cool Plugin;

Author: Amazing programmer

Author URI: http://www.somewere.com

Version: 1.0

*/

function My_Cool_Plugin_field_box() {

add_meta_box( 'My_Cool_plugin_section', 'Видео к новости', 'My_Cool_Plugin_fields','post' ); 

}

add_action('add_meta_boxes', 'My_Cool_Plugin_field_box');

function My_Cool_Plugin_fields(){

$post = get_post();

$url = get_post_meta($post->ID, 'post_video_url', true); 

echo '<input id="video_url" name="video_url" size="35" type="text" value="'.$url.'" placeholder="https://youtube.com" />';


}

function My_Cool_Plugin_Save_VideoUrl( $post_id ) {

$url = sanitize_text_field( $_POST['video_url'] );

update_post_meta( $post_id, 'post_video_url', $url );

}

add_action( 'save_post', 'My_Cool_Plugin_Save_VideoUrl' );

?>

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

Для вывода нашей ссылки на странице нужно использовать функцию

get_post_meta($post->ID, ‘post_video_url’, true);

Посмотрим в файл single.php активной темы. Там есть строка

get_template_part( ‘content’, get_post_format() );

Что означает — за вывод контента на данной странице отвечает файл content.php.

Откроем его и вставим туда нашу функцию, после строки:

………………………………………


the_content( sprintf(
__( 'Continue reading %s', 'twentyfifteen' ),
the_title( '<span class="screen-reader-text">', '</span>', false )
) );

echo 'Наша ссылка к новости: <a href="'".get_post_meta($post-">ID, 'post_video_url', true)."'>Видеосюжет</a>';

………………………………………

как создать плагин ворпрес

СПАСИБО за внимание!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *