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.