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í.


Super, už se těším na pokračování.
#1 | Reagovat
@Hojte: Jsem rád, že moji snahu aspoň někdo ocení.
#2 | Reagovat
@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