Jak udělat jednoduchý plugin pro WordPress

Tvoření pluginů pro platformu WordPress není nijak složité. V podstatě bohatě stačí, když umíte alespoň základy jazyka PHP (případně SQL). V první části seriálu se podíváme na to, jak dát dohromady velmi triviální plugin.

Tvorbu budu názorně demonstrovat na imaginárním pluginu “Database Optimization”, který bude mít za úkol defragmentovat (optimalizovat) všechny tabulky s nastaveným prefixem přes přidružené klikátko v administračním rozhraní.

Nejdříve si vytvoříme adresář, který nazveme database-optimization. Do něj vložíme soubor se stejným jménem a koncovkou .php. Jeho základní struktura by měla vypadat takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
/*
Plugin Name: Database Optimization
Plugin URI: http://example.com/database-optimization
Description: This plugin optimizes all tables in your MySQL database.
Version: 0.1
Author: Lelkoun
Author URI: http://example.com
License: A "Slug" license name e.g. GPL2
*/
add_action('admin_menu', 'database_optimization'); //přidá funkci database_optimization do menu
function database_optimization() { add_options_page('Database optimization', 'Database optimization', administrator, 'database-optimization', 'database_optimization_options'); } //určení názvů, levelu oprávněného uživatele a stránky v administračním rozhraní s klikátkem
function database_optimization_options() { include ("do_options.php"); } //zavolá do_options.php
?>

Hlavička v komentáři na řádcích 2 až 10 nese poznámky k vydání, které se zobrazují na stránce Přehled pluginů. Každá instance WordPressu také pravidelně kontroluje dostupnost aktualizací. Pokud se uvedená verze liší od té v repozitáři WordPressu, je uživateli nabídnuta možnost upgradu.

Soubor do_options.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="wrap">
<?php
if ($_POST["do_optimize_button"]) { //podmínka testující stisknutí tlačítka
global $wpdb; //speciální proměnná WP určená ke spojení s databází
 
$do_query = "SHOW TABLES FROM " . DB_NAME . " LIKE '$wpdb->prefix%'"; //vybrání tabulek s prefixem
$do_result = mysql_query($do_query);
while ($do_row = mysql_fetch_row($do_result)) { //cyklus
mysql_query("OPTIMIZE TABLE $do_row[0]"); //samotná optimalizace
}
echo "<div class=\"updated fade\"><p>Your database has been optimized.</p></div>"; //potvrzovací hláška
}
?>
 
<h2>Database Optimization</h2>
<form action="" method="post">
<input class="button-primary" type="submit" name="do_optimize_button" value=" Optimize tables ">
</form>
</div>

Důležitá poznámka: Při psaní vlastního kódu vždy používejte unikátní jména u souborů, proměnných, funkcí, konstant a jiných identifikátorů. Nejlépe před každý název vložte prefix skládající se ze zkratky názvu pluginu. Vyhnete se tak velmi častým a nebezpečným kolizím mezi vaším pluginem a ostatními skripty.

Nakonec je nutné vytvořit soubor readme.txt. V něm jsou obvykle zahrnuty informace potřebné pro umístění pluginu do wordpressáckého Plugin Directory.

1
2
3
4
5
6
7
8
9
10
11
12
=== Database Optimization ===
Contributors: Lelkoun
Tags: MySQL, database, optimize, table
Requires at least: 2.9
Tested up to: 3.0
Stable tag: trunk
 
This plugin optimizes all tables in your MySQL database.
 
== Description ==
 
This plugin optimizes all tables in your MySQL database. You can start optimizing by clicking on a button in the admin area.

Text mezi rovnítky se zobrazí jako nadpis na samostatné stránce. Více možností formátování naleznete v ukázkovém souboru readme.txt.

V příštím dílu seriálu si povíme něco o uploadování pluginu do oficiální wordpressácké databáze a jeho dalším upgradování.

Kam dál?

Odpovědi: 3

  1. Hojte

    Super, už se těším na pokračování.

    #1 | Reagovat

  2. Lelkoun

    @Hojte: Jsem rád, že moji snahu aspoň někdo ocení. :-)

    #2 | Reagovat

  3. Petr Malec

    @Lelkoun: Nejenom snaha :) Každopádně super, měl bych pár otázek právě okolo pluginů na WP, až se vrátíš z dovolené určitě se ozvu :)

    #3 | Reagovat

Komentujte!