Php 如何更新现有自定义帖子类型的类别?
我拿起一个遗留工具的工作,并正在重做一个与自定义文章类型工作的页面。我们将称之为新资源的新帖子类型,其“类别”标识符与现有的旧资源类型相同。我是Wordpress的新手,所以可能有比从头开始更好的方法,但这就是我所处的位置。我的目标是使用与现有资源相同的数据,这样我就不必创建所有的新帖子 我运行了两个查询,将现有资源类型更新为新资源类型:Php 如何更新现有自定义帖子类型的类别?,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我拿起一个遗留工具的工作,并正在重做一个与自定义文章类型工作的页面。我们将称之为新资源的新帖子类型,其“类别”标识符与现有的旧资源类型相同。我是Wordpress的新手,所以可能有比从头开始更好的方法,但这就是我所处的位置。我的目标是使用与现有资源相同的数据,这样我就不必创建所有的新帖子 我运行了两个查询,将现有资源类型更新为新资源类型: update wp_posts set post_type = 'new_resource' where post_type = 'old_resource'
update wp_posts set post_type = 'new_resource' where post_type = 'old_resource';
及
所有这些都在起作用
我现在要做的是更新自定义分类法(我没有使用内置的默认类别)。例如,我们将其称为资源类别。现有的旧资源帖子都分配了它们的资源类别,当我查询wp_术语时,我可以看到所有类别。我在新的资源类型中设置了相同的类别。我是否可以运行一个查询来选择具有一种新资源类型的所有资源(在我运行上面的更新查询之后,所有资源现在都是),并设置它们的类别?比如更新他们的term_id,其中term_id仍然指向旧类别类型的id
Wordpress版本:4.2.2
PHP版本:5.3.3
编辑:
我运行了以下查询:
mysql>从wp\u terms中选择term\u id、name、slug,其中slug='videos'代码>
+---------+--------+--------+
| term_id | name | slug |
+---------+--------+--------+
| 69 | Videos | videos |
| 177 | Videos | videos |
+---------+--------+--------+
2 rows in set (0.00 sec)
术语_id 69属于旧的资源类型。术语_id 177属于新资源。我希望我所有的当前资源(那些我已经运行过更新资源类型查询的资源)都指向term_id 177而不是69,但是我不确定帖子和术语之间的关系
类似于更新所有新资源的term_id,将69设置为177。更新只设置set子句中的列。。我设置子句ypu可以有多个列
您可以仅使用一个更新来执行这两个更新
update wp_posts
set post_type = 'new_resource',
guid = replace(guid, 'old-resource', 'new-resource')
where post_type = 'old_resource';
更新只设置set子句中的列。。我设置子句ypu可以有多个列
您可以仅使用一个更新来执行这两个更新
update wp_posts
set post_type = 'new_resource',
guid = replace(guid, 'old-resource', 'new-resource')
where post_type = 'old_resource';
我想出来了。我运行了一个查询,选择了我要比较的所有信息:
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\u term\u关系表中现有的分类法\u id
UPDATE wp_term_relationships SET term_taxonomy_id = 176 WHERE term_taxonomy_id = 13;
13是旧资源视频类型的ID,175是新资源视频类型的ID
只是在Wordpress表的关系中进行了一些挖掘。我找到了答案。我运行了一个查询,选择了我要比较的所有信息:
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\u term\u关系表中现有的分类法\u id
UPDATE wp_term_relationships SET term_taxonomy_id = 176 WHERE term_taxonomy_id = 13;
13是旧资源视频类型的ID,175是新资源视频类型的ID
只是在Wordpress表格关系中进行了一些挖掘。你的问题不清楚。。尝试发布一个合适的数据样本,得到预期的结果。@scaisEdge这是不是更容易混淆?你的问题不清楚。。尝试发布一个合适的数据样本,得到预期的结果。@scaisEdge这是否会减少混淆?但这如何解决类别问题?或者这只是对我之前的查询的一个评论?你对分类有什么问题。。您可以指定您喜欢的值,例如:只需将category_id=4添加到您设置的子句中,我就知道您在说什么了。我可以将每篇文章的term_id设置为更新后的term_id(我在上面添加了一些视频类型的查询代码)。我想我只是对wp_terms表和wp_post之间的关系感到困惑。我假设wp_posts表中有一个来自wp_terms表的外键,但不确定它是什么。我不明白。。试着用所有涉及的表格展示一个真实的样品,并展示预期的结果。所以你没有具体回答我,但你的问题让我明白了,所以我会接受。我不明白Wordpress表是如何通过键链接在一起的,所以写下这些查询很有帮助。但这如何解决类别问题呢?或者这只是对我之前的查询的一个评论?你对分类有什么问题。。您可以指定您喜欢的值,例如:只需将category_id=4添加到您设置的子句中,我就知道您在说什么了。我可以将每篇文章的term_id设置为更新后的term_id(我在上面添加了一些视频类型的查询代码)。我想我只是对wp_terms表和wp_post之间的关系感到困惑。我假设wp_posts表中有一个来自wp_terms表的外键,但不确定它是什么。我不明白。。试着用所有涉及的表格展示一个真实的样品,并展示预期的结果。所以你没有具体回答我,但你的问题让我明白了,所以我会接受。我对Wordpress表是如何通过键链接在一起感到困惑,所以写下这些查询会有所帮助。