¿Eliminar la metatabla innecesaria de la base de datos de WordPress?

2 minutos de lectura

Avatar de usuario de D.JCode
Código DJ

Quiero eliminar alguna metatabla innecesaria de la base de datos de WordPress, cada vez que cierre la sesión. Utilicé el siguiente código, pero no funciona. Quiero decir que no está eliminando la tabla que mencioné.

<?php
function delete_useless_post_meta() 
{
  global $wpdb;
  $table = $wpdb->prefix.'postmeta';
  $wpdb->delete ($table, array('meta_key' => '_edit_last'));
  $wpdb->delete ($table, array('meta_key' => '_edit_lock'));
  $wpdb->delete ($table, array('meta_key' => '_wp_old_slug')); 
}
add_action('wp_logout','delete_useless_post_meta');
?>

  • ¿Desea eliminar mientras el administrador cierra la sesión o el usuario?

    – Vela

    18 de septiembre de 2018 a las 7:07


  • @Vel administrador. Lo cambié a estoif( current_user_can('editor') || current_user_can('administrator') ){ global $wpdb; $table = $wpdb->prefix.'postmeta'; $wpdb->delete ($table, array('meta_key' => '_edit_last')); $wpdb->delete ($table, array('meta_key' => '_edit_lock')); $wpdb->delete ($table, array('meta_key' => '_wp_old_slug')); } ¡pero nada cambió!

    – DJCode

    18 de septiembre de 2018 a las 7:10


  • add_action('wp_logout','delete_useless_post_meta'); este gancho funciona bien para el administrador

    – Vela

    18 de septiembre de 2018 a las 7:11

Es mejor no interactuar directamente con la base de datos, especialmente al emitir declaraciones DELETE, ya que un solo error tipográfico puede destruir datos no deseados. En su lugar, use las funciones de WordPress para obtener una lista de todas las ID de usuario, luego elimine el metacampo de usuario para cada usuario individualmente, así:

$all_user_ids = get_users( 'fields=ID' );
foreach ( $all_user_ids as $user_id ) {
    delete_user_meta( $user_id, 'your_meta_key_to_delete' );
}

Referencia de la función:
https://codex.wordpress.org/Function_Reference/get_users
https://codex.wordpress.org/Function_Reference/delete_user_meta

O

Otra opción como, puede usar el complemento Adminimize – Administrar complemento

Avatar de usuario de Maximus
Máximo

Esto ha sido explicado aquí en su totalidad.

Eliminar WP Postmeta innecesario

Todo lo que tiene que hacer es agregar lo siguiente en el archivo functions.php de su tema

function delete_useless_post_meta() {
   global $wpdb;
   $table = $wpdb->prefix.'postmeta';
   $wpdb->delete ($table, array('meta_key' => '_edit_last'));
   $wpdb->delete ($table, array('meta_key' => '_edit_lock'));
   $wpdb->delete ($table, array('meta_key' => '_wp_old_slug')); }
add_action('wp_logout','delete_useless_post_meta');

¿Ha sido útil esta solución?