WPBP / WordPress-Plugin-Boilerplate-Powered

Wordpress Plugin Boilerplate but Powered with examples and a generator!
https://wpbp.github.io/
GNU General Public License v3.0
789 stars 114 forks source link

pll__ in get_string doesn't work if my plugin call it before Polylang set it #26

Closed overclokk closed 9 years ago

overclokk commented 9 years ago

Te lo scrivo in italiano che faccio prima, la funzione get_string non ritorna la stringa tradotta se è richiamata prima che questa venga settata da Polylang, se ti viene in mente una soluzione bene, se no comunque ci lavoro io e poi te la passo.

Un esempio veloce, stessa istanza, in __construct non becca la stringa di pll, in una funzione appesa a wp_footer la becca senza problemi. (Il plugin è Italy Cookie Choices, forse anche perché viene caricato in ordine alfabetico?)

Al max setto la variabile in una funzione e la appendo prima di wp_footer

Mte90 commented 9 years ago

BIsogna fare allora che il plugin se rileva polylang venga caricato dopo la sua inizializzazione e cosí il problema si dovrebbe risolvere.

overclokk commented 9 years ago

La cosa interessante è che function_exists( 'pll__' ) restituisce true

overclokk commented 9 years ago

Ok, ho capito ora cosa intendevi, ti faccio sapere.

Mte90 commented 9 years ago

credo che per risolvere basterebbe mettere un ordine in plugins_loaded molto alto in modo che venga eseguito per ultimo http://wordpress.stackexchange.com/questions/63141/in-what-order-does-wordpress-load-plugin-files

overclokk commented 9 years ago

Ti stavo per scrivere, si, bisogna usare plugins_loaded e farlo attivare dopo Polylang Polylang usa questo: add_action('plugins_loaded', array(&$this, 'init'), 1); E io ho fatto così:

if ( function_exists('pll__') )// Compatibility with Polylang
    add_action( 'plugins_loaded', array( $this, 'dependency_init' ), 11 );
else
    new Italy_Cookie_Choices_Front_End;

Così setta correttamente la variabile. Con WPML e Ceceppa non ho provato, male che vada basta aggiungere un function_exist anche per loro.

Mte90 commented 9 years ago

vedró di aggiungere questa cosa nel file e nel wiki

overclokk commented 9 years ago

:+1:

Mte90 commented 9 years ago

altrimenti penso che potrei riorganizzare il boilerplate in modo che il plugin venga caricato per ultimo che non é sbagliato come ragionamento facendo caricare anche la libreria.

overclokk commented 9 years ago

E se poi uno ha bisogno di caricare prima il proprio plugin per altri motivi? Forse è più logico fare decidere allo sviluppatore.

Mte90 commented 9 years ago

uhm beh per ultimo hai accesso a tutte le api di altri plugin altrimenti avresti problemi. Mi sembra raro che qualcuno abbia la necessità di essere caricato prima ma potrei mettere dei commenti di spiegazione nel codice.

overclokk commented 9 years ago

Anche questo è vero, si, al limite con la wiki e le varie opzioni poi uno si regola di conseguenza.

overclokk commented 9 years ago

Scoperto una cosa nuovo per Polylang che ti può essere utile https://github.com/ItalyCookieChoices/italy-cookie-choices/issues/68#issuecomment-121302152 Polylang se imposti la lingua in base ai contenuti la stringa non viene settata con plugins_loaded ma dopo, appena ho un attimo vedo quando esattamente.

Mte90 commented 9 years ago

beh in questo caso é fuori dalla mia polyfill peró buono a sapersi.

overclokk commented 9 years ago

Si, certo, può sempre tornare utile, ora vedo se posso risolverlo io altrimenti apro un ticket a polylang