Pluginy na míru jsem pro klienty, kde mám na starosti řízení rozvoje webu, nechával psát často. Ale na vlastních projektech jsem, co šlo, cpal v lepším případě do child theme a co nešlo – to taky.
Nedávno jsem dostal následující zadání: potřebujeme vypsat pouze aktivní pozice (a neaktivní je nutné zřetelně označit, že již nejsou aktuální).
Určil jsem tedy, že k aktivním pozicím přidáme štítek activeit a udělám takový menší plugin (zde pouze jeho část).
<?php /* Plugin Name: HR vypis pozic Plugin URI: http://www.michalblazek.cz Description: Plugin vytvari seznam aktivních pozici z IT. Version: 1.0 Author: Michal Blazek Author URI: http://www.michalblazek.cz License: GPL2 License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: hr-sekce Domain Path: /languages */ // výpis pozic z IT [poziceit] function pozicefunit () { $args=array('posts_per_page'=>20, 'tag' => 'activeit', 'orderby' => 'date', 'order' => 'desc'); $out = "<ul>"; $query = new WP_Query($args); if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); $out .= "<li><a href="". get_the_permalink()."">". get_the_title() ."</a></li>"; endwhile; endif; $out .= "</ul>"; wp_reset_postdata(); return $out; } add_shortcode( 'poziceit', 'pozicefunit' ); ?>
Toto pojmenujete hr_vypis_pozic.php zabalíte a nahrajete jako plugin.
Zde je nejdůležitější struktura toho pluginu:
- Je zde standardizovaná hlavička v poznámce /* */ – více na wp.org – toto se zobrazí v seznamu pluginů
- Poté je tu funkce
function pozicefunit ()
– zde je důležité, že nemůžete pouze vzít kód a vložit ho do pluginu. Vše, musí být v nějaké funkci. - Následuje samotný obsah funkce.
- Přidejte trigger, kdy se má stát vaše funkce. WordPress pracuje na základě hooků, které se poté ještě dělí na akce a filtry (skvěle popsané na wp.org). V podstatě to znamená, že WordPress i pluginy informují o tom, co dělají (vytvářejí háčky – hooky). A vy máte možnost buď přidat vlastní akci, upravit probíhající akci nebo něco odebrat – prostě se vším pracovat, ale přitom nezasáhnout do kódu WP, tématu ani jiného pluginu.
- já jsem například pouze vytvořil shortcode, který si můžu vložit kamkoliv na web a dostanu výpis IT pozic, ve stejném pluginu jsem například
- přidal oznámení o archivaci pomocí filtru – před obsah příspěvku se vložil ještě moje upozornění pomocí add_filter
- nebo jsem přidal akci do patičky webu – v tomto případě nějaký CSS styl nebo JavaScript což je možné udělat jako add_action(“wp_footer”,“funkce, co se má stát”)
Pokud toto četl někdo zkušený, z mé terminologie asi roste, ale takto jsem to já vnímal jako naprostý plugin-rookie během vývoje prvního pluginu.