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');
?>
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
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');
¿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 esto
if( 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