Jak zajistit, aby se váš WordPress plugin nahrál jako poslední

Tento snippet, podobně, jako ostatní, vznikl z potřeby vyřešení problému. Konkrétně bylo nutné ze šablony přenést funkce do pluginu a zajistit, aby se nahrál, jako poslední.

Proč poslední?

Protože, pokud píšete plugin, jenž má upravovat fungování, nebo zobrazování jiného pluginu, může se stát, že globální proměnné, nebo konstanty, nejsou dostupné.

Tento případ nastane, pokud je váš plugin načten dříve, než ten „zdrojový“.

Aby jsme náš plugin načetli poslední, musíme změnit pole, v option active_plugins.

Nejprve vytvoříme path našeho pluginu:

$path = str_replace( WP_PLUGIN_DIR . '/', '', __FILE__ );

WordPress totiž ukládá aktivní plugin do pole, kde hodnoty pole jsou složka pluginu + název hlavního souboru pluginu:

muj-plugin/muj-plugin.php

Nyní musíme načíst seznam aktivních pluginů:

$plugins = get_option( 'active_plugins' );

Protože vím, že plugin je aktivní a je uložen v poli, najdeme jeho klíč:

$key = array_search( $path, $plugins );

Protože jsme získali klíč, záznam smažeme:

array_splice( $plugins, $key, 1 );

Vezmeme náš $path a „přilepíme“ ho na konec pole, jako poslední záznam:

$plugins[] = $path;

A nakonec přeuložíme option:

update_option( 'active_plugins', $plugins );

Celá funkce pak vypadá následovně:

function my_plugin_load_last()
{
   $path = str_replace( WP_PLUGIN_DIR . '/', '', __FILE__ );
     if ( $plugins = get_option( 'active_plugins' ) ) {
 
        if ( $key = array_search( $path, $plugins ) ) {
 
           array_splice( $plugins, $key, 1 );
           $plugins[] = $path;
           update_option( 'active_plugins', $plugins );
 
        }
    }
}

A samozřejmě, musíme funkci „zavěsit“ do příslušného hooku:

add_action( 'activated_plugin', 'my_plugin_load_last' );

Tím jsme docílil, že se náš plugin načte až úplně poslední.

Čtěte  Nefunkční custom order status ve WooCommerce

 

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Related posts

Leave a Reply

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

Chcete mít přehled o dění ve světě WordPressu?

Přímo do vašeho emailu

Pravidelný přehled o novinkách, trendech a událostech, které se točí kolem WordPressu. Souhrn toho nejzajímavějšího od nás i ze zahraničí.