En ocasiones, necesitamos reinstalar WordPress por multitud de razones: errores, problemas de seguridad, incidentes en el hosting, etc. Hay muchas formas de hacerlo:
Pero es posible que nos interese por algún motivo, reinstalar el core de WordPress, desde código, para incluirlo en alguna tarea cron, en una herramienta que estemos preparando o directamente porque queramos jugar con las clases encargadas de estos temas en WordPress.
En este caso, mientras se resolvía un problema de seguridad en un sitio en producción, como última opción consideré la posibilidad de reinstalar el núcleo de WordPress cada hora con una función cron, para que al reinstalarse, se borrara la posible infección. No es el método ideal, pero al cliente le ha dado un respiro en un momento de mucha actividad mientras el alojamiento termina de resolver el problema.
¿Cómo lo he preparado? Pues adapatando lo que hace WordPress cuando le pides reinstalar el núcleo desde el escritorio, en la sección de actualizaciones. Os comparto el código que he preparado para esta labor y os lo comento brevemente, por si os interesa usarlo.
Aquí tenéis el código de la función lista para utilizar:
function cod_core_updater(){
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/update.php';
require_once ABSPATH . 'wp-admin/includes/misc.php';
global $wp_filesystem;
global $wp_version;
WP_Filesystem();
wp_version_check( array(), true );
$update = find_core_update( $wp_version, 'es_ES' );
if ( ! $update ) {
echo "No se encuentran actualizaciones";
wp_die();
}
if ( $wp_filesystem->errors->has_errors() ) {
foreach ( $wp_filesystem->errors->get_error_messages() as $message ) {
var_export( $message );
}
wp_die();
}
$update->response = 'reinstall';
$upgrader = new Core_Upgrader();
$result = $upgrader->upgrade( $update, array( 'allow_relaxed_file_ownership' => false ) );
if ( is_wp_error( $result ) ) {
var_export( $result );
if ( 'up_to_date' !== $result->get_error_code() && 'locked' !== $result->get_error_code() ) {
echo __( 'Installation failed.' );
}
wp_die();
}
wp_die( "Reinstalación terminada" );
} Como veis son pocas líneas de código para lo que se hace: descargar el paquete del core, descomprimirlo, sustituirlo por los antiguos, etc. Todo ello gracias a las clases y métodos que nos ofrece el núcleo de WordPress.
Como veis hasta para tareas ciertamente técnicas WordPress nos pone las cosas fáciles.
Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…
Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…
Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…
El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…
El plugin RedSys WooCommerce conecta tu tienda con el banco, reduce errores de cobro y…
Aprende a resolver rechazo SIS en WordPress: identifica el código, revisa RedSys, pedidos y firmas…