La differenza tra il file del plugin (principale) e la lumaca del plugin è un luogo in cui il WordPress Codex potrebbe fare molto meglio. Capisco la tua confusione come l'ho provata troppo di recente (mista a frustrazione).
Questo è quello che ho imparato facendo un po 'di "lavoro investigativo" sul codice centrale di WordPress.
Il file del plugin
Questo è il modo unico in cui WordPress identifica e registra un plugin. È composto dalla directory del plug-in E dal file del plug-in principale (quello con l'intestazione del file contenente i vari dettagli del plug-in come versione, autore, ecc.).
Sarebbe simile a questo: your-plugin-directory/main-file.php
Se guardi i dati dei plugin attivi (restituiti da get_option( 'active_plugins' )
), vedrai che WordPress ha bisogno solo di questo file di plugin per identificare correttamente i plugin.
Potresti scegliere di pensarlo come il percorso relativo del file principale del tuo plugin (relativamente alla wp-content/plugins/
directory che è). Potresti "comporre" il percorso assoluto del file del plugin principale con qualcosa del genere:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Il core stesso genera il file plugin in questo modo:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
La lumaca del plugin
Ci si aspetterebbe che il plug-in "slug" sia una sorta di ID standardizzato per il plug-in come il post slug è per i post - quindi potresti usare questo "slug" per fornirlo alle funzioni principali di WordPress e far funzionare le cose.
Non proprio. Dopo aver cercato nel nucleo riferimenti a slug plug-in (o temi per ciò che conta) e non ho trovato quasi nulla, penso di averne una comprensione.
Le uniche vere e proprie lumache sono quelle per le cose accessibili tramite un unico URL: post, pagine, tassonomie, ecc. Questo è il punto centrale di prendere il nome di qualcosa (come un titolo di post) e generare una versione di URL facile da usare : usare in un URL.
Ma dove utilizziamo "lumache" di temi / plugin negli URL?
Non lo facciamo su singole installazioni di WordPress, né nell'amministratore del WP né nel frontend.
Tuttavia, c'è un posto molto impigliato con il codice WordPress, il sito WordPress.org. Le persone fanno fatica a distinguere tra i due, incluso che è diventato in qualche modo comune tra gli sviluppatori considerare il tema WordPress.org o le lumache dei plugin dovrebbero funzionare allo stesso modo di una lumaca post o pagina.
Servono allo stesso scopo ma su siti Web separati . Su WordPress.org vengono utilizzati per identificare in modo univoco un tema dagli altri e un plug-in dal resto (in URL come https://wordpress.org/plugins/akismet/
).
Ma quando si tratta di singole installazioni di WordPress, la stessa unicità non può essere garantita perché non esiste l'autorità per applicarla (come su WordPress.org). Potrebbe funzionare se tutti i plugin e i temi provenissero da WordPress.org, ma per fortuna non è così.
Cosa fa il codice WordPress con le slug a tema / plugin?
Il codice principale di WordPress non si basa su slug a tema / plugin per fare cose come l'installazione, l'attivazione, l'aggiornamento, l'eliminazione di temi o plugin.
Per i temi, si basa sulla directory dei temi poiché il punto di ingresso principale in un tema è il style.css
file (non è possibile utilizzare un altro file CSS per contenere l'intestazione dei dettagli del tema).
Per i plug-in, si basa sulla directory dei plug-in E sul file dei plug-in principale , poiché i plug-in possono chiamare il loro file principale come preferiscono.
L'unica cosa per cui il core usa le lumache tema / plugin è quando gestisce temi e plugin dalla directory di WordPress.org: recuperare elenchi di plugin, controllare gli aggiornamenti, riferire ai dati di utilizzo della directory e così via.
Per concludere le cose sugli slug dei plug-in: ogni volta che trovi i dati dei plug-in con la slug
voce, il 99% delle volte farà riferimento allo slug di WordPress.org del plug-in.
Come possiamo identificare i plugin?
Se si desidera attivare, aggiornare, disattivare o eliminare a livello di codice un determinato plug-in su un'installazione di WordPress, è necessario utilizzare il file del plug-in. Puoi ottenerlo in questo modo dal file principale del tuo plugin:
$plugin_file = plugin_basename( __FILE__ );
Se vuoi scegliere come target un determinato plugin da un altro plugin, le cose diventano un po 'più complicate poiché devi fare affidamento su un po' di "congetture".
È possibile codificare il nome del plug-in, cercare il plug-in nell'elenco di tutti i plug-in (consultare get_plugins () ) e ottenere il file del plug-in da lì.
Se conosci una classe o una funzione definita da quel plugin puoi usare la riflessione (vedi questa risposta per le classi e questa per le funzioni).
Spero che questo aiuti te e gli altri che potrebbero avere difficoltà a gestire le "lumache dei plug-in". Mi avrebbe risparmiato un paio d'ore :)