it-swarm-eu.dev

Jak mohu najít pluginy 'slug?

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?

  1. Mají malá a velká písmena význam?
  2. Může mít plugin jiný název než název složky? Co když existuje plugin s názvem hello.php a další /hello.php/hello.php?
11
Paul

Ř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__ );
6
fuxia

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.

2
Thomas Bindzus

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
0
Meatloaf4

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']);
0
majick

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__ );
0
jb510

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;
}
0
busy