WordPress

Můj první WordPress plugin – fakt to nebolí

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

Můj plugin tu taky jednou bude!

<?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:

  1. Je zde standardizovaná hlavička v poznámce /* */ – více na wp.org – toto se zobrazí v seznamu pluginů
  2. 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.
  3. Následuje samotný obsah funkce.
  4. 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.