Zajímalo by mě, jak mohu najít pluginy 'slug (slug = interní název, který používá WordPress dělat aktualizace pluginů a zjistit, které pluginy jsou v současné době aktivní)? Je to obvykle název složky pluginu, ale pokud plugin nemá složku, jedná se o název souboru (jako hello.php). Existují nějaké jiné výjimky?
Řetězec použitý ve WordPressu k identifikaci pluginu je:
plugin_basename($file);
… Kde $file
je soubor s hlavičkami pluginu .
Pokud se tedy nacházíte ve svém pluginu, získejte slug s:
$slug = plugin_basename( __FILE__ );
Pokud instalujete WP-CLI pak můžete získat seznam pluginů s jejich slugem a verzí z příkazového řádku:
> wp plugin list
Vím, že to asi není to, co chcete, pokud potřebujete najít slug v kódu, ale pomohlo mi to při práci s pluginem TGM-Plugin-Activation.
Je těžké pracovat s WordPressem bez WP-CLI, obecně je to velmi užitečný nástroj pro mnoho běžných úkolů souvisejících s WordPressem.
Jen k objasnění od původního příspěvku.
Způsob, jakým jsem našel zásuvný modul pro plugin, spočívá v tom, že nejprve přejdete do složky s pluginem a poté otevřete složku přidruženou k zásuvnému modulu a nakonec najdete soubor, který obsahuje níže uvedený kód. Jakmile tento soubor najdete, měl by být název souboru mínus přípona vaším modulem plugin.
Například, když jsem našel níže uvedený kód v souboru s názvem advanced-plugin-awesomeness.php, můj slimák by byl pokročilý plugin-awesomeness.
Snad to pomůže!
/*
Plugin Name: Name of plugin here
Version: 2.4.6
Description: plugin description here
Author: plugin author here
Naneštěstí se slug vrátí prostřednictvím rozhraní API pro aktualizaci, odpověď na tuto otázku není tak zřejmá, pokud se nezeptáte na samotné rozhraní API. Pokud však chcete zobrazit seznam aktuálních modulů pluginů a souvisejících údajů o pluginu, můžete to jednoduše provést:
print_r(get_site_transient('update_plugins'));
Ale to nebude mít informace o nově instalovaném pluginu pro dalších 12 hodin, budete muset udělat něco jiného pro ty, např. použít upravenou verzi kódu z wp_update_plugins
v wp-includes/update.php
...
Když to provedete, vyzkoušejte to, zdá se, že potvrzuje, že bez ohledu na název souboru nebo umístění nebo velká písmena, je to vlastně Plugin Name
, které generuje aktualizaci slug, nejspíše přes sanitize_title
. Takže věřím, že správná odpověď by měla být:
// if you have the plugin basename:
// $pluginfile = WP_PLUGIN_DIR.'/'.$pluginbasename;
// otherwise if you have the absolute path already:
$plugin = get_plugin_data($pluginfile);
$pluginslug = sanitize_title($plugin['Name']);
Název složky pluginu (PHP5.3 +) můžete získat tak, že předáteDIRna adresu plugin_basename (), tak jako:
$plugin_foldername = plugin_basename( __DIR__ );
Zkuste to:
function get_slugname(){
$tmp = array();
$plugins_all = get_plugins() ;
$plugin_slug = explode('/',dirname(plugin_basename(__FILE__)));
foreach ($plugins_all as $key=>$value) {
if ($plugin_slug[0] == explode('/',$key)[0] ) {
$tmp = $value;
$tmp['slug'] = explode('/',$key)[0];
$tmp['file'] = explode('/',$key)[1];
}
}
return $tmp;
}