通过MySQL查询Polylang语言的WordPress文章

5

我正在尝试构建一个MySQL查询,按语言(Polylang插件)选择最后一篇文章,但我无法找到Polylang存储每个文章语言的表格和字段。

有什么线索吗?


3
我认为映射信息存储在wp_term_taxonomy表中。它是一个包含您的语言环境和文章ID的数组。查询语句为:SELECT * FROM `wp_term_taxonomy` WHERE `taxonomy` = 'post_translations' - 4lxndr
谢谢您指引我正确的方向。关于Polylang在构建wp_term_taxonomy.description字段值时使用的代码,是否有任何可用的信息? - Matias Masso
2个回答

8
以下MySQL查询将查找所有已发布的WordPress文章,这些文章是使用Polylang插件中的英语语言编写的:
SELECT * FROM wp_posts WHERE post_status = 'publish' AND ID IN (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(description, '"en";i:', -1), ';',1) FROM `wp_term_taxonomy` WHERE `taxonomy` = 'post_translations' ) order by ID desc

非常有帮助! - Jos
我希望我能够给这个更多的赞。 - ACJ

4

我知道回答你的问题已经太晚了,但我会写下来,方便未来用户。

你可以在 wp_term_relationshipswp_term_taxonomy 数据表中找到与 Polylang 相关的所有内容。

例如,如果我想要获取 id = 157896 的特定文章的语言。

wp_term_relationships 表的 object_id 列中,我应该搜索 157896,然后就能得到结果。

object_id | term_taxonomy_id
----------------------------
  157896  |     26284
  157896  |     26130
  157896  |      11

wp_term_taxonomy中,我们有:

term_taxonomy_id | taxonomy | description
---------------------------------------------
26284 | post_translations | a:2:{s:2:"en";i:157896;s:2:"de";i:157894;}
26130 | category | Description ... ...
11    | language | a:3:{s:6:"locale";s:5:"en_UK";s:3:"rtl";i:0;s:9:"flag_code";s:2:"en";}

26130是与类别相关的。

26280表示该帖子已翻译成deen语言,其中en的帖子编号为157896de的帖子编号为157894

11意味着id = 157896的帖子以en(英语)语言发布。

wp_term_relationships是一个关联表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接