Proč a jak na vlastní plugin pro WordPress

Dříve nebo později člověk narazí na potřebu vlastních úprav WordPressu. Internet je plný šikovných a povedených ukázek kódu u kterých se většinou píše: „Přidejte do functions.php vaší šablony“.

Jenže když to zapíšu do šablony, tak o změny přijdu s první aktualizací šablony! Řešením je použití tzv. Child Theme, kdy si šablonu zduplikuji, v té duplicitní si pitvám co chci, a pokud vyjde aktualizace originální šablony, o změny sice nepřijdu, ale musím si aktualizaci ručně aplikovat na mojí Child šablonu. To se mi taky nelíbí.

Řešením je tedy vlastní plugin pro WordPress, kde si všechny ty svoje změny napíšu a nic mi je nerozhodí (leda tak já, když udělám chybu).

Vytvoření pluginu je jednodušší než se zdá, stačí si ve složce wp-content/plugins/ vytvořit vlastní složku a v ní PHP soubor s následujícím obsahem:

Po vytvoření tohoto souboru, by se měl plugin objevit mezi ostatními pluginy a stačí ho jen aktivovat.

vlastni-plugin-01

Více o hlavičce v Header Requirements.

No a co do něj napsat?

Definice dalších typů souborů, které lze nahrát do Médií

Pokud chceme přes nahrávání médií vkládat na web i nějaké nestandardní typy souborů, WordPress nás standardně nenechá, podporuje jen běžné dokumenty, PDF, archivy. Tímto lze seznam podporovaných souborů rozšířit.

Na WP-Snippets je i nějaká trochu jiná verze.

Vlastní CSS styly

Jelikož šablona Hueman nepodtrhává odkazy, tak jsem to řešil úpravou jejích CSS souborů, ale to jsme zase na tam kde jsme byli. Stačí ale přidat asi dva řádky stylů, takže proč ke stávajícím stylům nepřihodit styl vlastní bez zásahu do šablony. Soubor custom.min.css je ve složce tohoto pluginu.

custom.min.css obsahuje zatím prakticky 4 minifikované řádky

Edit: Od verze WordPressu 4.7 je možné si definovat vlastní CSS, takže toto už by nemělo být potřeba.

Remove query strings from static resources

Weby testující rychlost a optimalizaci webu nemají rádi, když jsou CSS a JS s parametry v url. S tím zatočí osvědčený kousek kódu.

Clear WP Super Cache

vlastni-plugin-02

WP Super Cache je hezký a funkční plugin (dokonce jsem na něj přešel z W3 Total Cache viz WordPress. Nastavení, tipy a pluginy co jsem použil), jen jednu vadu má – pokud chceme smazat cache, tak se musíme proklikat hluboko do nastavení. Přitom by stačilo jen přidat odkaz do horní administrační lišty…

PayPal Donate

Občas by člověk chtěl k něčemu připojit PayPal tlačítko (né, že by mi někdy někdo něco přispěl  (ale najdou se výjimky)), tak jsem našel snippet jak si přidat vlastní shortcode. Výsledek pak může vypadat třeba takto: Donate Now ( [donate account="mikrom@mikrom.cz"]Donate Now[/donate] ).

Vlastní Admin menu

vlastni-plugin-03

A od Clear WP Super Cache jsme už jen kousek od toho si do admin menu přidat libovolné důležité odkazy. Na to se hodí vlastní funkce pro jednodušší přidávání odkazů.

Funguje to tedy tak, že pouze přidávám/měním/mažu řádky custom_adminbar_item(); tak, že:

  • id_polozky musí být unikátní, nejjednodušší je tedy prosté číslování
  • parent_polozky udává nadřazenou položku, vhodné pro submenu, může se uvést prázdný string '' pak bude přímo v adminbaru
  • nazev_polozky je text zobrazený v menu
  • url_polozky je odkaz, může se uvést prázdný string ''
  • napoveda_polozky je volitelný parametr, zobrazuje se po najetí myši

A teď pozor

Po tom co jsem vypotil výše zmíněný kus kódu, kde musím každý odkaz ručně dopsat, a přitom si stále hlídat id a parrent aby se menu nerozsypalo, mě napadlo využít menu přímo z WordPressu (Vzhled -> Menu)! Dyť to musí jít! No nepřišel jsem na to sám, ale jde to. A jelikož jsem to googlil asi dva týdny, tak to přidám sem.

Důležité jsou řádky 8 a 13, kde se definuje název menu vytvořeného ve WordPressu, a jaký text se bude zobrazovat v administrační liště.

A to je asi tak vše. Správně by měl ve složce pluginu být ještě soubor readme.txt (Plugin Readme Generator), měli bychom dodržovat jednotný styl psaní (WordPress PHP Coding Standards), měli bychom asi na začátku napsat něco v tomto duchu if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly, kdyby náhodou chtěl někdo spustit PHP přímo, ale takhle by se dalo vymýšlet donekonečna.

EDIT 17.12.2016: Další tipy třeba zde

EDIT 27.12.2016: Přidání oznámení o cookies, aneb proč na to instalovat samostatný plugin

 

mikrom

mikrom

Roman Mikulka aka mikrom. Ajťák, opravář, programátor samouk, elektrotechnik, koloběžkář a geocacher. Více na samostatné stránce O mně.

Mohlo by se vám líbit...

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

2 + twenty =