¿Activar un plugin a través de PHPMyAdmin o FTP?
Acabo de desactivar un plugin en mi sitio y ahora me muestra la temida pantalla blanca de la muerte. Sé que el sitio funcionará bien si reactivo el plugin.
¿Hay alguna forma de activar manualmente un plugin a través de PHPMyAdmin o mediante FTP?

Solucioné esto yendo a PHPMyAdmin a la tabla "Options" y luego a la fila active_plugins
.
Tenía lo siguiente almacenado allí (formateado para legibilidad):
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";
}
Agregué una nueva línea (para el plugin faltante) e incrementé el a:10
a a:11
para indicar que ahora hay 11 elementos en el 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:
parece ser el número de ítem, y gracias al comentario de JHoffmann, parece que s:
es la longitud de la cadena que sigue.
¡El sitio ahora funciona como antes!

La s
representa una cadena (string) y el número que le sigue indica la longitud de dicha cadena.

@JHoffmann ¡Gracias por eso! He actualizado mi respuesta. ¿Podrías decirme dónde aprendiste eso? ¿Existe algún buen recurso que explique este tipo de cosas? Gracias.

i
en realidad significa valor entero (integer), s
significa cadena (string) y el número junto a s
indica la longitud de la cadena.

@PieterGoosen La misma pregunta para ti: ¿Dónde aprendiste eso? ¿Existe algún recurso en algún lugar?

Eso son datos serializados. No tengo una fuente exacta, pero puedes investigar sobre datos serializados. También puedes mirar JSON ya que es donde más se utilizan los datos serializados

@DjangoReinhardt Como dijo Pieter Goosen, estos son datos serializados generados por la función serialize de php. En WordPress también hay una función envoltorio llamada maybe_serialize

Ojalá estandarizaran el nombre del archivo del plugin que declara el plugin en sí. Estoy trabajando en un script que descargará, instalará y activará los plugins automáticamente. ¡Esto es la pieza que me falta!

Actualizar ese valor directamente en la tabla de la base de datos ha causado que todos mis plugins se desactiven. Después de hacer eso, necesito habilitar todos los plugins nuevamente a través de la interfaz de administración de Wordpress. Me pregunto qué causa que los plugins se desactiven después de actualizar el valor de la opción 'active_plugins'.

Secundo, esto funcionó exactamente como se describió para mí. Curiosamente, parece que los valores i:
no necesitan ser contiguos... Yo tenía a:40
y luego los números i
iban de 0 a 38 y el último era 40, no había 39. Cambié a:
a 41 y agregué mi nuevo plugin al final con i:41
y funcionó perfectamente.

//Usando este código puedes activar tu plugin desde el functions.php
function activate_plugin_via_php() {
$active_plugins = get_option( 'active_plugins' );
array_push($active_plugins, 'unyson/unyson.php'); /* Aquí solo reemplaza el directorio del plugin unyson y el archivo del plugin*/
update_option( 'active_plugins', $active_plugins );
}
add_action( 'init', 'activate_plugin_via_php' );

también podrías agregar un if(!in_array('unyson/unyson.php',$active_plugins)) para asegurarte de que no se añada más de una vez

¿Dónde puedo encontrar functions.php
? ¿Está en la carpeta del tema o en wp-includes
?

Mi instinto dice que, aunque la respuesta marcada como correcta funciona, esta debería ser la marcada como correcta, ya que es completamente desde WordPress, no implica manipular directamente la base de datos y, en general, es menos propenso a errores hacerlo. functions.php
está en la carpeta del tema, generalmente deberías crear un tema hijo y editarlo allí, ya que el functions.php
del tema padre perderá tus ediciones la próxima vez que se actualice el tema.

Otra respuesta para un enfoque diferente que podría beneficiar a alguien más en el futuro. También podrías mover la carpeta del plugin a la carpeta de Must Use (que probablemente necesitarás crear si no la has usado antes). Esta ruta suele ser:
wp-content/mu-plugins
Los plugins en esta carpeta siempre se ejecutarán. Consulta lo siguiente para más información:
https://codex.wordpress.org/Must_Use_Plugins
Nota: Lo único a considerar es que estos plugins se cargan antes que otros en la carpeta de plugins. También consulta las advertencias en el enlace anterior, ya que puede haber otros problemas que podrían evitar que tu plugin funcione correctamente.

Me salvó la vida en un sitio web de 5 años creado por otro desarrollador que había instalado 2 plugins dependientes entre sí y en el cual desactivé accidentalmente uno de ellos.

Puedes simplemente renombrar la carpeta del plugin, por ejemplo:
"_aksimet"
para desactivarlo
y luego volver a
"aksimet"
para activarlo nuevamente (si estaba activo)
Puedes hacer esto con todas las carpetas de "plugins" juntas.
De lo contrario, ve a MySQL y revisa este manual paso a paso, en resumen:
- MYSQL >
wp_options
- busca la entrada
active_plugins
(ambos pasos se pueden hacer conSELECT * FROM wp_options WHERE option_name = 'active_plugins';
) - y luego escribe tu plugin allí como están escritos los otros plugins (
i
es índice,s
es para la longitud de la cadena).
Espero que ayude

Gracias. Intenté desactivarlo y resulta que el código del plugin está demasiado integrado en todo el sitio. Necesito una forma de reactivarlo :(

¿Qué quieres decir con eso? Para reactivarlo simplemente cambia el nombre de vuelta. ¿Tienes algún error o algo así?

El plugin fue desactivado a través de la interfaz de WP Admin. Una vez desactivado, ya no pude acceder a mi sitio. No había nada que "renombrar" ya que no lo desactivé cambiando el nombre por FTP.
