Cum să obții numele plugin-ului curent?

27 apr. 2015, 12:36:05
Vizualizări: 17.1K
Voturi: 1

Am nevoie să obțin numele plugin-ului curent folosind o definiție ca aceasta:

define(PLUGIN_NAME, plugin_basename(dirname(__FILE__)));

Din păcate, acel cod nu funcționează deoarece fișierul php este într-un subdirector (includes) al directorului plugin-ului meu și returnează

my-plugin/includes 

Există vreo funcție din API-ul Wordpress care să rezolve această problemă? Mulțumesc anticipat.

7
Comentarii

define(PLUGIN_NAME, "MY PLUGIN NAME"); este suficient. De ce ai nevoie de ceva dinamic care nu este deloc dinamic.

Mayeenul Islam Mayeenul Islam
27 apr. 2015 12:45:51

pentru că presupun că utilizatorul ar putea instala pluginul într-un director ales de el.

Tetrahedronix Tetrahedronix
27 apr. 2015 12:54:45

Pluginurile pot fi instalate doar în folderul mu sau plugins și nu pot merge în subdirectoare, așa că nu ai de ce să-ți faci griji.

Pieter Goosen Pieter Goosen
27 apr. 2015 13:14:47

Mă refer la faptul că utilizatorul ar putea instala plugin-ul în plugins/theplugins în loc de plugins/myplugin

Tetrahedronix Tetrahedronix
27 apr. 2015 13:23:50

Nu înțeleg problema ta. Citește din nou comentariul meu anterior.

Pieter Goosen Pieter Goosen
27 apr. 2015 13:26:14

Dacă un utilizator adăugă intenționat un plugin într-un folder incorect, aceasta este problema lui. Nu ar trebui să fie problema ta.

Pieter Goosen Pieter Goosen
27 apr. 2015 13:28:22

Ar trebui să plasați define în fișierul principal al pluginului myplugin/myplugin.php

TheDeadMedic TheDeadMedic
27 apr. 2015 14:11:55
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 3
3
13

În fișierul PHP principal al plugin-ului:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_name = $plugin_data['Name'];
16 sept. 2016 12:53:50
Comentarii

Aceasta funcționează doar în admin, apropo

Jacob Raccuia Jacob Raccuia
16 ian. 2018 16:38:22

Îmi place această soluție, dar când afișez toate cheile și valorile din array-ul asociativ, doar TextDomain returnează o valoare: PluginURI = Version = Description = Author = AuthorURI = TextDomain = my-calculator DomainPath = Network = Title = AuthorName =

... cum pot seta/prelua toate celelalte valori pentru #plugin_data?

TARKUS TARKUS
15 apr. 2018 15:51:44

Asigură-te că comentariul principal din fișierul tău de plugin conține datele relevante conform https://codex.wordpress.org/File_Header

Mark Howells-Mead Mark Howells-Mead
16 apr. 2018 20:35:34
0

poți obține numele pluginului într-un subdirector al pluginului tău folosind acest fragment de cod:

$plugin = basename( plugin_dir_path(  dirname( __FILE__ , 2 ) ) );

trebuie doar să specifici nivelul subdirectorului relativ la folderul pluginului în al doilea parametru al funcției dirname().

1 apr. 2018 11:35:29
1

Acest lucru vă va furniza numele folderului pluginului, indiferent de locația fișierului și fără a fi nevoie să cunoașteți structura directorului pluginului.

$plugin_folder_name = reset(explode('/', str_replace(WP_PLUGIN_DIR . '/', '', __DIR__)));

Pentru o explicație detaliată a ceea ce se întâmplă

// Obține calea relativă a fișierului curent față de directorul rădăcină al pluginului
$file_path_from_plugin_root = str_replace(WP_PLUGIN_DIR . '/', '', __DIR__);

// Desparte calea într-un array
$path_array = explode('/', $file_path_from_plugin_root);

// Folderul pluginului este primul element
$plugin_folder_name = reset($path_array);
18 aug. 2021 15:44:39
Comentarii

Linia unică provoacă afișarea unei notificări "Notice: Only variables should be passed by reference", așa că folosesc varianta mai lungă.

popnoodles popnoodles
21 dec. 2021 18:45:19