今天有点困惑。我在我的网站中实现了一些查询字符串,所以我想追溯更新我之前(600多篇)的所有帖子,以更新包含此查询字符串的特定超链接。
例如,我的大多数帖子都有这样的代码:
<a data-name="Dish Washer">Dish Washer</a>
是否有可能强制更新所有帖子以更改此链接:
<a data-name="Dish Washer" href="/items/?item=Dish Washer">Dish Washer</a>
最困难的是,显然不仅仅是“洗碗机”,每个帖子都包含大量的物品。
我想知道是否可以通过MySQL来实现,但我一辈子都想不出来。
最合适的回答,由SO网友:kierzniak 整理而成
此脚本将根据您的需要获取所有帖子并替换其内容:
function wpse_287574_replace_content() {
// Get all posts
$query = new WP_Query(array(
\'post_type\' => \'post\',
\'posts_per_page\' => -1,
));
$posts = $query->get_posts();
foreach ($posts as $post) {
// Get content
$content = $post->post_content;
// Regex and replacement
$regex = \'/^(\\<a\\s+data-name=\\".+\\")(\\>(.+)\\<\\/a\\>)$/\';
$replacement = \'$1 href="/items/?item=$3"$2\';
// Replace content
$new_content = preg_replace($regex, $replacement, $content);
// Prepare arguments
$args = array(
\'ID\' => $post->ID,
\'post_content\' => $new_content,
);
// Update post
wp_update_post( $args );
}
}
add_action(\'init\', \'wpse_287574_replace_content\');