【问题标题】:How to get Wordpress post with title, content and featured image using mysql query如何使用 mysql 查询获取带有标题、内容和特色图片的 Wordpress 帖子
【发布时间】:2016-06-21 10:30:57
【问题描述】:

您好,我知道这个问题可能看起来很熟悉,但请阅读完整的问题。 我想使用 mysql 查询获取 Wordpress 帖子标题、特色图片、内容。 我尝试了很多查询,但都遇到了错误。

没有错误,MySQL 查询返回空。我正在使用 Wordpress 4.5.2 版。

我找到了这个查询,但它给了我一个空的结果。

    SELECT p1.*, wm2.meta_value 
    FROM wp_posts p1 
    LEFT JOIN wp_postmeta wm1 ON (
    wm1.post_id = p1.id
    AND wm1.meta_value IS NOT NULL
    AND wm1.meta_key = '_thumbnail_id'
    )
    LEFT JOIN
    wp_postmeta wm2
    ON (
    wm1.meta_value = wm2.post_id
    AND wm2.meta_key = '_wp_attached_file'
    AND wm2.meta_value IS NOT NULL
    )LEFT JOIN
   wp_term_relationships wtr
   ON
 (
    object_id=p1.id
   )
   WHERE
   p1.post_status='publish'
   AND p1.post_type='post'
   AND 'term_taxonomy_id'='454'
   ORDER BY p1.post_date DESC
   LIMIT 0,10

如何改进此查询以返回结果?

【问题讨论】:

  • 您应该向我们展示您的数据库结构,并自行检查您的 MySQL 在您运行查询时是否返回任何错误通知。
  • 您使用的是哪个版本的 WordPress?
  • 没有错误,mysql查询返回空,wordpress版本为4.5.2
  • 查看 $wpdb->get_results("INSERT SQL QUERY HERE")。

标签: mysql wordpress


【解决方案1】:

SQL 的 WHERE 子句有错误:

AND 'term_taxonomy_id'='454'

字符串'term_taxonomy_id' 永远不会等于字符串'454'

首先,要检查,请从您的查询中完全删除此条件。如果您返回结果但仍想按此 taxonomy_id 进行过滤,则删除字段名称周围的单引号:

SELECT p1.*,
    wm2.meta_value
FROM wp_posts p1
LEFT JOIN wp_postmeta wm1 ON (
        wm1.post_id = p1.id
        AND wm1.meta_value IS NOT NULL
        AND wm1.meta_key = '_thumbnail_id'
        )
LEFT JOIN wp_postmeta wm2 ON (
        wm1.meta_value = wm2.post_id
        AND wm2.meta_key = '_wp_attached_file'
        AND wm2.meta_value IS NOT NULL
        )
LEFT JOIN wp_term_relationships wtr ON (object_id = p1.id)
WHERE p1.post_status = 'publish'
    AND p1.post_type = 'post'
    AND term_taxonomy_id = '454'
ORDER BY p1.post_date DESC LIMIT 0,10

在 MySQL 中,您可以在字段名称周围使用反引号,但在字符串文字周围使用单引号。如果你把它们混在一起,你会有麻烦的。

如果您仍然没有获得结果,请考虑删除 p1.post_statusp1.post_type 限制,看看您是否能获得结果并进行相应调整。

【讨论】:

  • 谢谢您,先生。像魅力一样工作!..再帮我一个忙,我怎么能通过多个类别 ID 做到这一点?
  • 我不确定类别 ID 是什么。自从我上次使用 Wordpress 已经有好几年了。但是...如果您想为多个分类法执行此操作,您可以将and term_taxonomy_id = '454' 更改为and term_taxonomy_id in ('454','455','456') 之类的东西,无论category id 是什么(假设它已经是其中一个表中的一个字段)加入了。
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多