这是最后一个对我有用的非JS方法:
Step 1: update sitewide option
您可以通过多种方式来实现这一点。由于设置为一次性操作,我选择通过访问
https://www.example.com/wp-admin/options.php . 我搜索了“image\\u default\\u link\\u type”并将其设置为“none”(单词none,not null),然后保存了设置。
不幸的是,保存的usermeta覆盖了此站点范围的设置,因此此时问题链接仍在继续出现。
Step 2: update all users
非常感谢@Milo揭示了它存储在-usermeta下的位置,该位置隐藏在一个选项查询字符串中,这些选项可能以任何顺序出现。
理论上,这可能是一次性操作,或者如果您认为用户可能会不断更新其默认值,您可以将其设置为在钩子上运行,如wp_dashboard_setup
因此,每次有人查看仪表板时,所有用户的“urlbutton”选项都会被删除,这会导致站点使用站点范围内的“image\\u default\\u link\\u type”。我选择在仪表板视图上运行。
add_action(\'wp_dashboard_setup\', \'wpse_update_user_defaults\');
function wpse_update_user_defaults() {
$users = get_users();
foreach($users as $user) {
// pull current settings
$wpUserSettings = get_user_meta($user->ID, \'wp_user-settings\', true);
// if \'wp_user-settings\' is present with a \'urlbutton\' value
if(!empty($wpUserSettings) && strpos($wpUserSettings, \'urlbutton\') !== false) {
// if \'urlbutton\' is not the only setting
if(strpos((string)$wpUserSettings, \'&\') !== false) {
// if there\'s an & before (may or may not have an & after)
$firstUpdate = preg_replace("/&urlbutton=[^&]*/", \'\', $wpUserSettings);
// if there\'s an & after (but not before)
$secondUpdate = preg_replace("/^urlbutton=[^&]*&/", \'\', $firstUpdate);
// save updated meta
update_user_meta($user->ID, \'wp_user-settings\', $secondUpdate);
// if \'urlbutton\' is the only setting
} else {
delete_user_meta($user->ID, \'wp_user-settings\');
}
}
}
}
整理好后,我使用以下查询搜索存在问题的现有帖子:
SELECT * FROM wp_posts WHERE post_content LIKE "%rel=\\"attachment%"
然后从那里手动编辑所有帖子以删除标签。