在SQL中选择自定义帖子类型及其元数据

时间:2021-06-17 作者:Sem313

所以我有下面的SQL脚本,在这里我可以用特定的meta_键查看我所有的post_meta:

SELECT * FROM `wp_postmeta` 
WHERE `meta_key` = \'honorific\' 
OR `meta_key` = \'suffix\'
OR `meta_key` = \'nickname\' 
不管怎样,我是否可以这样做,而不是给我所有带有这些键的post\\u meta,它只给我匹配特定post类型(如“test”)的post\\u meta?

我试过:

SELECT * p.post_type FROM wp_posts p ` INNER JOIN `wp_postmeta`

----- Also:

SELECT p.ID, 
       p.post_title
FROM  wp_posts p 
      INNER JOIN wp_postmeta AS pm ON pm.post_id  = p.ID
WHERE
      pm.meta_key = \'honorific\' AND p.post_type = \'employee\'
这就是我有点被困的地方——我们将感谢所有的帮助。

基本上:

给我一个post\\u meta,它等于敬语、后缀和昵称,以及与自定义帖子类型测试相关的帖子

1 个回复
最合适的回答,由SO网友:bosco 整理而成

Tom\'s comment on the question makes a very important point: 除非您只是出于诊断或探索目的使用此SQL,否则几乎可以肯定地说,通过WordPress API或WP CLI之类的工具,有一种更简单、更有效的方法来访问此数据。

实际上,没有理由在WordPress插件、主题或站点中使用此SQL进行逻辑

思考的方式SELECT... JOINs就是你SELECT从“开始”;“虚拟表”;制作单位:JOIN.

我们可以SELECT 中的所有行wp_postmeta 具有以下内容之一的表:meta_keys"honorific", "suffix", 或"nickname" 和apost_id 对应于ID 字段输入wp_posts 具有的行post_type "employee" 因此:

SELECT wp_postmeta.*
  FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
  WHERE wp_posts.post_type="employee"
    AND wp_postmeta.meta_key IN ("honorific", "suffix", "nickname");
或者更简洁地使用表别名,

SELECT m.*
  FROM wp_posts AS p INNER JOIN wp_postmeta AS m ON p.ID = m.post_id
  WHERE p.post_type="employee"
    AND m.meta_key IN ("honorific", "suffix", "nickname");

相关推荐

主题、WordPress版本、MySQL版本、PHP版本更新受影响的文件和文件夹

我注意到我的自定义文件和文件夹在主题更新后消失了,我真的不知道受影响的自定义文件和文件夹的确切范围是什么:在Wordpress和主题更新期间如何保存文件?在Wordpress更新期间,我制作的自定义表是否也会消失?MySQL版本更新是否删除wordpress中的自定义表?