从WordPress数据库中删除不必要的metatable?

时间:2018-09-18 06:48:39

标签: php wordpress

每当我注销时,我都希望从WordPress数据库中删除一些不必要的元表。 我使用了下面的代码,但是它不起作用。我的意思是这不是删除我提到的表。

<?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');
?>

1 个答案:

答案 0 :(得分:3)

最好不要直接与数据库进行交互,尤其是在发出DELETE语句时,因为单个错字会破坏意想不到的数据。而是使用WordPress函数获取所有用户ID的列表,然后分别删除每个用户的用户元字段,如下所示:

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

功能参考: https://codex.wordpress.org/Function_Reference/get_users https://codex.wordpress.org/Function_Reference/delete_user_meta

OR

其他选项,例如,您可以使用Adminimize插件-Adminimize plugin