我试图仅更新 WordPress 网站上所有帖子和页面的发布日期年份。
我错误地用插件查找并替换,并将 2018 年替换为 2019 年。结果,很多帖子显示为“已计划”,因为它们的发布日期更改为 2019 年。实际上我只想更改帖子/页面标题中显示的是 2018 年,而不是发布日期。
我想知道这是否有效,但我担心它可能会损坏整个网站。这是我在网上找到的一些代码:
UPDATE wp_posts
SET post_date = REPLACE(post_date, '2019-‘, '2018-')
WHERE post_date LIKE '%2018-%'
我不确定这是否是在 phpmyadmin 中运行的正确代码。在进行任何更改之前我已经备份了网站。
使用特定于日期的函数而不是基于字符串的函数。
UPDATE wp_posts
SET post_date = post_date + INTERVAL 1 YEAR
WHERE YEAR(post_date) = 2018;
如果您想更新所有 WordPress 帖子,以便它们保留原来的日期和月份,但只是将年份更改为今年,您将需要稍微不同的 PHP 脚本。此脚本将获取每个帖子的日期,将年份修改为当前年份,然后使用新日期更新帖子。
这是一个 PHP 代码片段,它的作用正是如此:
function update_posts_year_to_current() {
$current_year = date('Y'); // Get the current year
$args = array(
'post_type' => 'post',
'posts_per_page' => -1, // Get all posts
'post_status' => 'any' // Include posts in all statuses
);
$query = new WP_Query($args);
if($query->have_posts()) {
while($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$original_date = get_the_date('Y-m-d H:i:s'); // Get the original post date and time
$new_date = $current_year . substr($original_date, 4); // Change the year but keep the month, day, and time
$post_data = array(
'ID' => $post_id,
'post_date' => $new_date,
'post_date_gmt' => get_gmt_from_date($new_date)
);
wp_update_post($post_data);
}
wp_reset_postdata();
}
}
// Run this function once to update all posts
update_posts_year_to_current();
functions.php
文件中,或使用“代码片段”等插件添加自定义 PHP,而无需编辑主题文件。此脚本将所有帖子的发布日期的年份部分更改为当前年份,同时保留原始帖子日期的月、日和时间。