Impedir la eliminación de blogs

4

Estoy tratando de evitar la eliminación de blogs en una instalación de WordPress Multisite. Ya hay un complemento que hace esto, pero utiliza wp_die() como la solución, que en mi escenario no funciona.

Al seleccionar varios blogs para eliminar en wp-admin / network, quiero que WordPress continúe trabajando y no muera en el intento de eliminar el primero en el bucle.

He intentado resolverlo así como un complemento de mu:

if(!$argv[1]) {

    add_action( 'delete_blog', 'prevent_blog_delete_wpse', 1, 2 );

    function prevent_blog_delete_wpse($blog_id, $drop = FALSE)
    {

        global $wpdb;
        $wpdb->query("update wp_blogs set deleted = 1 where blog_id = '".$blog_id."'");
        return FALSE;
    }
}

Por lo tanto, si la eliminación se realiza a través del navegador y la no CLI, solo marcará el blog como eliminado. Lamentablemente esto no funciona. También he intentado cambiar la prioridad de 1 a 99, todavía no funciona.

El motivo de esta solución es que tengo un cronjob separado que hace la eliminación real, pero primero hace un archivo de las tablas de sql y blogs.dir archivos en caso de que necesite restaurar.

Por supuesto, esto puede solucionarse pirateando la función de código del núcleo wpmu_delete_blog() , pero prefiero no hacerlo, ya que se interrumpirá en la próxima actualización de WordPress.

    
pregunta Tonny Jørgensen 29.07.2016 - 15:37

1 respuesta

0

No puede detener nada que no tenga una opción explícita para ser detenido. En este caso, las acciones son un medio para ejecutar algún código adicional en el contexto de una ruta de ejecución específica, y no para alterarlo. Si no hay manera de indicar al proceso que se detenga, la única forma es die() .

Si lo piensa desde una percepción lógica más distante, no tiene ningún sentido que una API de eliminación de blog no elimine el blog. Si necesita algo como "cola para eliminar", solo necesita escribir su propia función y reemplazar los enlaces de eliminación relevantes en el administrador con enlaces a su operación.

    
respondido por el Mark Kaplun 12.04.2017 - 05:58

Lea otras preguntas en las etiquetas