Attivare un plugin tramite PHPMyAdmin o FTP?
Ho appena disattivato un plugin sul mio sito e ora mi sta mostrando la temuta schermata bianca della morte. So che il sito tornerà a funzionare se riattivo il plugin.
Esiste un modo per attivare manualmente un plugin tramite PHPMyAdmin o FTP?

Ho risolto questo problema accedendo tramite PHPMyAdmin alla tabella "Options" e poi alla riga active_plugins
.
Avevo i seguenti valori memorizzati lì (formattati per una migliore leggibilità):
a:10:{
i:0;s:49:"1and1-wordpress-wizard/1and1-wordpress-wizard.php";
i:1;s:29:"acf-repeater/acf-repeater.php";
i:2;s:30:"advanced-custom-fields/acf.php";
i:3;s:45:"limit-login-attempts/limit-login-attempts.php";
i:4;s:27:"redirection/redirection.php";
i:6;s:33:"w3-total-cache/w3-total-cache.php";
i:7;s:41:"wordpress-importer/wordpress-importer.php";
i:8;s:24:"wordpress-seo/wp-seo.php";
i:9;s:34:"wpml-string-translation/plugin.php";
i:10;s:38:"wpml-translation-management/plugin.php";
}
Ho aggiunto una nuova riga (per il plugin mancante) e incrementato il valore a:10
a a:11
per indicare che ora ci sono 11 elementi nell'array:
a:11:{
i:0;s:49:"1and1-wordpress-wizard/1and1-wordpress-wizard.php";
i:1;s:29:"acf-repeater/acf-repeater.php";
i:2;s:30:"advanced-custom-fields/acf.php";
i:3;s:45:"limit-login-attempts/limit-login-attempts.php";
i:4;s:27:"redirection/redirection.php";
i:5;s:40:"sitepress-multilingual-cms/sitepress.php";
i:6;s:33:"w3-total-cache/w3-total-cache.php";
i:7;s:41:"wordpress-importer/wordpress-importer.php";
i:8;s:24:"wordpress-seo/wp-seo.php";
i:9;s:34:"wpml-string-translation/plugin.php";
i:10;s:38:"wpml-translation-management/plugin.php";
}
i:
sembra indicare il numero dell'elemento, e grazie al commento di JHoffmann, sembra che s:
rappresenti la lunghezza della stringa che segue.
Ora il sito funziona come prima!

La s
sta per stringa e il numero che segue rappresenta la lunghezza della stringa.

@JHoffmann Grazie per questo! Ho aggiornato la mia risposta. Puoi dirmi dove l'hai appreso? C'è qualche buona risorsa che spiega queste cose? Grazie.

i
in realtà significa valore intero, s
significa stringa e il numero accanto a s
è la lunghezza della stringa

@PieterGoosen Stessa domanda per te: dove l'hai imparato? Esiste qualche risorsa al riguardo?

Quelli sono dati serializzati. Non ho una fonte esatta, ma puoi approfondire i dati serializzati. Puoi anche dare un'occhiata al JSON dato che è più lì dove vengono utilizzati i dati serializzati

@DjangoReinhardt Come ha detto Pieter Goosen questi sono dati serializzati generati dalla funzione serialize di php. In WordPress c'è anche una funzione wrapper chiamata maybe_serialize

Vorrei che standardizzassero il nome del file del plugin che dichiara il plugin stesso. Sto lavorando a uno script che scaricherà, installerà e attiverà automaticamente i plugin. Questo è l'ultimo pezzo che mi manca!

Aggiornare quel valore direttamente nella tabella del database ha disabilitato tutti i miei plugin. Dopo averlo fatto, ho dovuto riattivare tutti i plugin tramite l'interfaccia di amministrazione di Wordpress. Mi chiedo cosa causi la disattivazione dei plugin dopo l'aggiornamento del valore dell'opzione 'active_plugins'.

Confermo, ha funzionato esattamente come descritto nel mio caso. È interessante notare che sembra che i valori i:
non debbano essere consecutivi... Avevo a:40
e poi i numeri i
andavano da 0 a 38 e l'ultimo era 40, senza il 39. Ho cambiato a:
a 41 e aggiunto il mio nuovo plugin alla fine con i:41
e ha funzionato perfettamente.

//Utilizzando questo codice puoi attivare il tuo plugin dal file functions.php
function activate_plugin_via_php() {
$active_plugins = get_option( 'active_plugins' );
array_push($active_plugins, 'unyson/unyson.php'); /* Sostituisci qui semplicemente la directory del plugin unyson e il file del plugin*/
update_option( 'active_plugins', $active_plugins );
}
add_action( 'init', 'activate_plugin_via_php' );

potresti anche aggiungere un if(!in_array('unyson/unyson.php',$active_plugins)) per assicurarti che non venga aggiunto più di una volta

Dove posso trovare functions.php
? Si trova nella cartella del tema o in wp-includes
?

Il mio istinto dice che, anche se la risposta contrassegnata come corretta funziona, questa dovrebbe essere quella contrassegnata come corretta, poiché è interamente all'interno di WordPress, non implica la modifica diretta del database ed è generalmente meno soggetta a errori. functions.php
si trova nella cartella del tema, generalmente dovresti creare un child theme e modificarlo lì, poiché il functions.php
del tema genitore perderà le tue modifiche al prossimo aggiornamento del tema.

Un'altra risposta per un approccio diverso che potrebbe essere utile a qualcun altro in futuro. Potresti anche spostare la cartella del plugin nella cartella Must Use (che probabilmente dovrai creare se non l'hai mai usata prima). Questo percorso è solitamente:
wp-content/mu-plugins
I plugin in questa cartella verranno sempre eseguiti. Fai riferimento al seguente link per maggiori informazioni:
https://codex.wordpress.org/Must_Use_Plugins
Nota: L'unica cosa da considerare è che questi plugin vengono caricati prima degli altri nella cartella dei plugin. Consulta anche le avvertenze nel link sopra poiché potrebbero esserci altri problemi che potrebbero impedire il corretto funzionamento del tuo plugin.

Mi ha salvato la vita su un sito web di 5 anni creato da un altro sviluppatore che aveva installato 2 plugin dipendenti l'uno dall'altro e su cui ho disabilitato accidentalmente uno di essi.

Puoi semplicemente rinominare la cartella del plugin, ad esempio:
"_aksimet"
per disattivarlo
e poi tornare a
"aksimet"
per riattivarlo nuovamente (se era attivo)
puoi farlo con tutte le cartelle dei "plugin" insieme.
In alternativa, vai su MySQL e dai un'occhiata a questo manuale passo dopo passo, in breve:
- MYSQL >
wp_options
- cerca la voce
active_plugins
(entrambi i passaggi possono essere eseguiti conSELECT * FROM wp_options WHERE option_name = 'active_plugins';
) - e poi scrivi il tuo plugin lì come sono scritti gli altri plugin (
i
è l'indice,s
è per la lunghezza della stringa).
Spero sia utile

Grazie. Ho provato a disattivarlo e si è scoperto che il codice del plugin è troppo integrato in tutto il sito. Ho bisogno di un modo per riattivarlo :(

Cosa intendi con questo? Per riattivarlo basta rinominarlo nuovamente. Hai qualche errore o altro?

Il plugin è stato disattivato tramite l'interfaccia di amministrazione di WordPress. Una volta disattivato non ho più potuto accedere al mio sito. Non c'era nulla da "rinominare" perché non l'ho disattivato rinominandolo via FTP.
