Ottieni un percorso per un plug-in diverso


10

Per ottenere il percorso di un plug-in è possibile utilizzare plugin_dir_path(__FILE__), ma questo ovviamente deve essere chiamato dall'interno del plug-in.

Come è possibile ottenere in modo affidabile il percorso del plug-in B ( pluginb/pluginb.php) dall'interno del plug-in A?

Modifica: si presume che tu conosca la lumaca del plug-in che stai cercando (in realtà puoi ottenerli get_plugins()). Ma vorrei che funzionasse in generale.


Questo si applicherebbe a qualsiasi plugin? o uno / più in particolare? In quest'ultimo caso, sono le tue o le tue pubblicazioni pubbliche?
TheDeadMedic

Quindi presumo che tu conosca la lumaca del plug-in che stai cercando: ad esempio pluginb/pluginb.php, ma è di terze parti.
Stephen Harris,

Risposte:


9

La mia ipotesi migliore sarebbe:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

Tuttavia, il pericolo qui è ancora il presupposto del "basename" del plugin - un plugin ben scritto continuerà a funzionare anche quando la sua directory e / o il suo file principale sono stati rinominati (per qualsiasi motivo).

Che risale al mio commento originale - a seconda di quale di terze parti plug-in questo si riferisce, molti autori definiscono i loro metodi propri / costanti per tenere il percorso plugin - avrebbe senso per verificare la loro esistenza e utilizzare questi invece (se disponibile ).


Ah ok, ho aggiornato la domanda :). È possibile ottenere la lumaca plug-in da get_plugins()- nel mio caso d'uso c'è abbastanza. Se stai cercando un plug-in specifico e non c'è niente di meglio disponibile, immagino che tu possa cercare il plug-in tramite il nome in get_plugins().
Stephen Harris,

+1 Vorrei idealmente evitare di usare le costanti, ma questa soluzione controlla almeno quando le usa :) ed è come core sembra fare le cose.
Stephen Harris,

2

Quindi un metodo è quello di chiamare plugin_dir_path()all'interno del plug-in corrente e sostituire il proprio nome della directory del plug-in con quello dello slug del plug-in che si sta cercando ( pluginb/pluginb.php):

Quindi all'interno del nostro plug-in plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

Vorrei sconsigliarlo, dato che si presume che il plugin B sia nella stessa directory di A (che non sarà necessariamente il caso, plugin MU ala).
TheDeadMedic

Grazie, pensato che ci sarebbe qualcosa che mi mancherebbe :)
Stephen Harris,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.