我帮助一位朋友写WordPress博客,因为我是一个“电脑爱好者”,虽然我没有WordPress的具体经验,多年来也没有使用过PHP。所以,我真的很感激任何人都能对这个问题有所启发。
该博客的主要目的是对项目进行分类,大约有8000篇帖子,每篇都包含一张照片。这个博客开始于另一个平台,几年前被迁移到WordPress,所以后端的事情相当混乱。数千条帖子从其他平台迁移,然后又有数千条帖子从WP CMS发布。他们最近升级到了WordPress的最新版本(还有一个新主题Themolio),现在有两个主要问题(第一个是最大的问题,尽管我想同时解决这两个问题):
在<img>
每个帖子中照片的标记包含在post\\u内容字段中。然而,根据我上面描述的博客混乱的历史,有些URL是绝对的,有些是相对的。我不知道哪些是“正确的”,即WP生成它们的方式,哪些是从其他平台导入的。绝对值在各处都很好。相对的在每篇文章中都很好,但当它们出现在归档页面中时,它们就会断开。尽管每个页面可能有不同的路径,但我能否以某种方式使图像正确显示在所有页面上?它们都应该是相对的还是绝对的?最后,我可以使用MySQL查询和正则表达式的一些组合来更新数据库中的所有条目以使其统一吗
Solution
根据Gorit的评论,下面是我用来解决每个问题的代码:
问题1:执行的SQL命令与她的帖子中所写的几乎一模一样。根据您的具体情况,更改您需要的任何详细信息。
问题2:运行放置在根文件夹中的这段php代码。
require_once \'./wp-config.php\';
global $wpdb;
$wpdb->show_errors();
$posts = $wpdb->get_results("SELECT id, post_parent FROM wp_posts WHERE post_type = \'attachment\'", ARRAY_N);
if ($posts) {
foreach ($posts as $post) {
// First insert a thumbnail_id meta tag for the attachment that points to itself
$wpdb->query("INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (\'" . $post[0] . "\', \'_thumbnail_id\', \'" . $post[0] . "\')");
// Next, insert a thumbnail_id meta tag for the attachment\'s parent post that points to the attachment
$wpdb->query("INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (\'" . $post[1] . "\', \'_thumbnail_id\', \'" . $post[0] . "\')");
}
}