我的 WordPress 网站上有很多垃圾邮件配置文件。他们使用自己的个人资料(主页和描述)链接到垃圾邮件网站。
这是识别它们的好方法。普通用户不会在其个人资料上编写带有链接的人工智能生成的长文本。
如何使用sql批量删除它们(或首先找到它们)?
数据可以在meta_key描述中的wp_usermeta表中找到。
我试过这个:
SELECT meta_key FROM `wp_usermeta` WHERE description != '';
但收到此错误消息:
#1054 - “where 子句”中的未知列“描述”
看来我暂时不明白这个表的结构。
你能帮我吗?
谢谢。
您可以从管理员用户列表中过滤有描述的用户,然后批量删除它们,而不是在数据库中搜索(这里的按钮过滤器称为“垃圾邮件”,请参见屏幕截图)。
尝试以下操作:
add_action( 'restrict_manage_users', 'add_filter_users_has_description', 20 );
function add_filter_users_has_description() {
echo '<input id="post-query-submit" type="submit" class="button" value="Spam" name="has_description">';
}
add_filter( 'pre_get_users', 'filter_users_with_description' );
function filter_users_with_description( $query ) {
global $pagenow;
if ( is_admin() && 'users.php' == $pagenow && isset($_GET['has_description']) && !empty($_GET['has_description']) ) {
$meta_query = array(
array(
'key' => 'description',
'value' => '',
'compare' => '!=',
)
);
$query->set( 'meta_query', $meta_query );
}
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。
添加:在 WordPress 用户列表自定义列中显示修剪后的描述
// add a custom column admin users list
add_filter( 'manage_users_columns', 'add_spam_column_to_users_list' );
function add_spam_column_to_users_list( $columns ) {
$columns['description'] = 'Spam';
return $columns;
}
// Users custom column: Display user description (trimmed)
add_filter( 'manage_users_custom_column', 'add_description_to_users_list_spam_column', 10, 3 );
function add_description_to_users_list_spam_column( $output, $column, $user_id ) {
if ( 'description' === $column ) {
if ( $description = get_user_meta( $user_id, 'description', true ) ) {
$output = '<small style="word-break:break-word;">'.wp_trim_words( $description, 5 ).' ...</small>';
}
}
return $output;
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。