Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
标记所有Wordpress帖子_Wordpress_Tags - Fatal编程技术网

标记所有Wordpress帖子

标记所有Wordpress帖子,wordpress,tags,Wordpress,Tags,我已经搜索了几个小时,或者是一个插件,或者是一些看起来安全的SQL来做这件事,但似乎没有什么是我真正需要的 我有一个Wordpress网站,大约有32000篇文章,我们使用各种标签来帮助后端的管理,也就是说,在任何人评论过多使用同一标签之前,它们在前端不可见或用于SEO。这些帖子中大约有30000篇包含标签“new”,但我们现在需要标记剩余的~2000篇来匹配 WP管理小组并不是真的为这项任务而工作——它需要花费一些人几天的时间来完成并将标签应用到2000篇文章中。各种插件似乎存在,但它们并没有

我已经搜索了几个小时,或者是一个插件,或者是一些看起来安全的SQL来做这件事,但似乎没有什么是我真正需要的

我有一个Wordpress网站,大约有32000篇文章,我们使用各种标签来帮助后端的管理,也就是说,在任何人评论过多使用同一标签之前,它们在前端不可见或用于SEO。这些帖子中大约有30000篇包含标签“new”,但我们现在需要标记剩余的~2000篇来匹配

WP管理小组并不是真的为这项任务而工作——它需要花费一些人几天的时间来完成并将标签应用到2000篇文章中。各种插件似乎存在,但它们并没有真正做到它们在描述中所声称的。我能找到的唯一有用的SQL假设标记是新的,并且我希望将其应用于单个类别中的所有帖子。我想我可以再次删除现有的标签,这对于Wordpress的管理面板来说不是一个有趣的任务——它通常在发布大约30篇文章后崩溃,这意味着有人必须坐在那里反复点击按钮,然后运行SQL来应用新的标签


有人能给我指出正确的方向吗?

你可以在所有帖子上运行一个循环,并使用wp\u set\u object\u术语添加所需的标签:


我今天也有这个问题。我用以下SQL标记了我所有的帖子。替换为您的DB前缀,替换为您想要的标记名

# create a term which will be your new tag
INSERT INTO <prefix>_terms (name, slug) VALUES ("GlobalTag", "global-tag")

# this is what defines the term as a Tag vs Category vs Video Category, etc
# only do this if you are creating the category through SQL, not the GUI
INSERT INTO <prefix>_term_taxonomy (term_id, taxonomy, count)
SELECT
  (SELECT term_id from <prefix>_terms AS term WHERE term.name="GlobalTag") as "term_id",
  "tag" as "taxonomy",
  (SELECT COUNT(*) FROM <prefix>_posts AS posts WHERE (posts.post_status IN ("publish", "draft")) AND LENGTH(post_content) > 25) as "count"

# now tag every post with GlobalTag
INSERT INTO <prefix>_term_relationships
SELECT
  id as "object_id",
  (
    SELECT term_taxonomy_id
    FROM <prefix>_term_taxonomy AS term_tax
    INNER JOIN <prefix>_terms ON <prefix>_terms.term_id = term_tax.term_id
    WHERE <prefix>_terms.name="GlobalTag"
  ) as "term_taxonomy_id",
  0 as "term_order"
FROM <prefix>_posts AS posts
WHERE (posts.post_status IN ("publish", "draft")) AND LENGTH(post_content) > 25

注意:您可能需要在此处调整posts查询。这会标记所有已发布和/或草稿的帖子,以及内容长度超过15个单词的帖子。

我们最终使用了一个插件,该插件会按照字母“a”标记所有帖子,因为所有帖子都会包含这些内容,然后将此标记重命名为“新”,并删除旧标签。不过,正如预期的那样,由于WP的脚本每隔几分钟就会死掉,所以删除旧标记需要几个小时。如果我有时间写的话,你的循环想法会更好。遗憾的是,没有任何合适的插件或机制来实现这一点。也许你应该建造一个;-。