我正在接受遗留工具的工作,并正在重做一个适用于自定义帖子类型的页面。新帖子类型我们会调用 new_resource ,并且具有相同的"类别"标识符作为现有遗留资源类型 old_resource 。我对Wordpress很陌生,所以可能有一种更好的方法,而不仅仅是从头开始,但这就是我所处的位置。我的目标是使用与现有资源相同的数据,因此我不必创建所有新帖子。
我运行了两个查询,将现有资源类型更新为新资源:
update wp_posts set post_type = 'new_resource' where post_type = 'old_resource';
和
update wp_posts set guid = replace(guid, 'old-resource', 'new-resource');
所有这一切都在发挥作用。
我现在要做的是更新自定义分类(我没有使用内置的默认类别)。我们将此示例称为 resource-category 。现有的旧资源帖子都分配了资源类别,当我查询wp_terms时,我可以看到所有类别。我已经在新资源类型中设置了这些SAME类别。是否有一个我可以运行的查询,它将选择具有一种新资源的所有资源(现在,在我运行上面的更新查询后,所有这些资源都已存在)并设置其类别?比如更新他们的term_id,其中term_id仍然指向旧类别类型的ID?
Wordpress版本:4.2.2 PHP版本:5.3.3
我运行了这个查询:
mysql> select term_id, name, slug from wp_terms where slug = 'videos';
+---------+--------+--------+
| term_id | name | slug |
+---------+--------+--------+
| 69 | Videos | videos |
| 177 | Videos | videos |
+---------+--------+--------+
2 rows in set (0.00 sec)
term_id 69属于旧资源类型。 term_id 177属于新资源。我希望我当前所有的资源(我已经运行更新资源类型查询的资源)指向term_id 177而不是69,但我不确定帖子和术语之间的关系。
更新所有新资源的term_id,设置为69到177。
答案 0 :(得分:0)
更新只设置了set子句中的列..而且我设置子句ypu可以有多个列
您可以使用仅更新
进行两次更新 update wp_posts
set post_type = 'new_resource',
guid = replace(guid, 'old-resource', 'new-resource')
where post_type = 'old_resource';
答案 1 :(得分:0)
我明白了。我运行了一个查询,选择了我正在比较的所有信息:
SELECT p.post_title as “wp_post_title”, tr.term_taxonomy_id as “term_rship_id”, tt.taxonomy as “term_tax_name”, tm.slug as “terms_slug”
FROM wp_posts p
INNER JOIN wp_term_relationships tr ON p.ID = tr.object_id
INNER JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN wp_terms tm ON tm.term_id = tt.term_id
WHERE tt.taxonomy = 'exp_wp_resource_category' or tt.taxonomy = 'resource-categories';
然后我在wp_term_relationship表中更新了现有的taxonomy_ids。
UPDATE wp_term_relationships SET term_taxonomy_id = 176 WHERE term_taxonomy_id = 13;
13是旧资源视频类型的ID,175是新资源视频类型的ID。
刚刚通过Wordpress表关系进行了一些挖掘。