На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Создание плагина для Wordpress. Часть 1: каркас и первая таблица



В сети есть немало инструкций по созданию плагинов для вордпресс, но подавляющее большинство из них останавливаются на «хелло ворлд» - то есть минимальный функционал. А если нам требуется активное взаимодействие с базой данных? Да еще через AJAX? Тут есть немало тонкостей.

Так что давайте сами напишем небольшое руководство по созданию плагина для вордпресс – от а до я. Плагин будет в процессе меняться, но общая задумка такая: создадим таск-менеджер для личного пользования. То есть можно ставить себе задачи, помечать их выполенными, редактировать и удалять. В процесс близко познакомимся с программированием на PHP и JS, а также будем изучать внутренности CMS Wordpress.

Итак, для начала структура. Назовем плагин taskmanager, предварительно создаем вот такой набор файлов и папок:



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

Самый главный файл тут – это, как ни странно, не index.php, а taskmanager.php. Его код

<?php

/**
 * The plugin bootstrap file
 *
 * This file is read by WordPress to generate the plugin information in the plugin
 * admin area. This file also includes all of the dependencies used by the plugin,
 * registers the activation and deactivation functions, and defines a function
 * that starts the plugin.
 *
 * @since             1.0.0
 * @package           TaskManager
 *
 * @wordpress-plugin
 * Plugin Name:       TaskManager
 * Plugin URI:        https://upread.ru/
 * Description:       TaskManager
 * Version:           1.0.0
 * Author:            up7
 * Author URI:        https://upread.ru/
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain:       taskmanager
 * Domain Path:       /languages
 */

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

/**
 * Currently plugin version.
 * Start at version 1.0.0 and use SemVer - https://semver.org
 * Update it as you release new versions.
 */
define( 'TASKMANAGER_VERSION', '1.0.0' );

/**
 * The code that runs during plugin activation.
 * This action is documented in includes/class-taskmanager-activator.php
 */
function activate_taskmanager() {
	require_once plugin_dir_path( __FILE__ ) . 'includes/class-taskmanager-activator.php';
	TaskManager_Activator::activate();
}

/**
 * The code that runs during plugin deactivation.
 * This action is documented in includes/class-taskmanager-deactivator.php
 */
function deactivate_taskmanager() {
	require_once plugin_dir_path( __FILE__ ) . 'includes/class-taskmanager-deactivator.php';
	TaskManager_Deactivator::deactivate();
}

register_activation_hook( __FILE__, 'activate_taskmanager' );
register_deactivation_hook( __FILE__, 'deactivate_taskmanager' );

/**
 * The core plugin class that is used to define internationalization,
 * admin-specific hooks, and public-facing site hooks.
 */
require plugin_dir_path( __FILE__ ) . 'includes/class-taskmanager.php';

/**
 * Begins execution of the plugin.
 *
 * Since everything within the plugin is registered via hooks,
 * then kicking off the plugin from this point in the file does
 * not affect the page life cycle.
 *
 * @since    1.0.0
 */
function run_taskmanager() {

	$plugin = new TaskManager();
	$plugin->run();

}
run_taskmanager();
Тут все должно быть понятно: просто подключаем и инициализируем. Единственно бращу внимание, что комментарии вверху – название там плагина – они обязательны – без этого вордпресс его просто не подключит.

Давайте сегодня посмотрим еще на один файл includes/class-taskmanager-activator.php
<?php

/**
 * Fired during plugin activation
 *
 * @since      1.0.0
 *
 * @package    TaskManager
 * @subpackage TaskManager/includes
 */

/**
 * Fired during plugin activation.
 *
 * This class defines all code necessary to run during the plugin's activation.
 *
 * @since      1.0.0
 * @package    TaskManager
 * @subpackage TaskManager/includes
 * @author     up7
 */
class TaskManager_Activator {

	/**
	 * Short Description. (use period)
	 *
	 * Long Description.
	 *
	 * @since    1.0.0
	 */
	public static function activate() {

	}

}
Именно здесь, как можно догадаться из названия, необходимо располагать методы при наступлении события активации плагина. Разумно будет сюда поместить создание таблицы с задачами – должны же они где-то храниться, верно?

Добавляем функцию, можно статическую, нужна она всего один раз

public static function create_table(){
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();
    $tablename = $wpdb->prefix . "tasks";
    $sql = "CREATE TABLE $tablename (
		id int(11) NOT NULL AUTO_INCREMENT,
		dat datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  		name varchar(255) NOT NULL,
  		description text NOT NULL DEFAULT '',
		is_done int(1) NOT NULL  DEFAULT '0',
  		PRIMARY KEY  (id)
  	) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
И вызов её

public static function activate() {
	TaskManager_Activator::create_table();
}
Теперь после того, как вы зальете файлы на хостинг в ваш вордпресс в директорию с плагинами, то у вас появится что-то типа такого



А после активации должна в базе данных создаться новая табличка с названием wp_tasks.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, wordpress, php, плагин





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



Урок 42. Методы C#
Все о Smarty


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.