自定义$ wpdb由Taxonomy Meta过滤的帖子

时间:2017-05-17 01:30:09

标签: php mysql wordpress

在复杂的设置上工作,我们在具有不同前缀的同一数据库上安装了2个单独的Wordpress。

我需要对站点A的站点B的产品进行一些查询。

我的SQL有点生疏,因为我主要使用内置的WP函数。

在网站A上我使用get_terms使用元查询来循环分类,然后对每个帖子进行另一个查询。

在网站B上我想做一个自定义的$ wpdb查询并让它几乎正在我检查一个post元值然后按照分类名称排序,如下所示:

 $querystr = "
  SELECT $tsm_posts.*, $siteA_terms.name, $siteA_terms.slug, tax2.description
  FROM $siteA_posts, $siteA_postmeta
  INNER JOIN {$siteA_term_relationships} AS rel2 ON $siteA_postmeta.post_id = rel2.object_id
  INNER JOIN {$siteA_term_taxonomy} AS tax2 ON rel2.term_taxonomy_id = tax2.term_taxonomy_id
  INNER JOIN {$siteA_terms} USING (term_id)
  WHERE $siteA_posts.ID = $siteA_postmeta.post_id
  AND $siteA_postmeta.meta_key = 'siteB_product'
  AND $siteA_postmeta.meta_value = 'yes'
  AND $siteA_posts.post_status = 'publish'
  AND $siteA_posts.post_type = '" . SP_PRODUCTS . "'
  AND $siteA_posts.post_parent = '0'
  GROUP BY rel2.object_id
  ORDER BY GROUP_CONCAT({$siteA_terms}.name ORDER BY name ASC)";
  $siteA_products = $wpdb->get_results($querystr, OBJECT);

我遇到的一个主要问题是也能够按分类法元值进行过滤,以及某些类别无法显示。

所以我一直在尝试在分类法元表上做另一个INNER JOIN,但是我遇到了问题而没有得到预期的结果:

  INNER JOIN {$siteA_termmeta} AS taxMeta ON ( taxMeta.term_id = rel2.term_taxonomy_id AND taxMeta.meta_key = 'product_category_main' AND taxMeta.meta_value = 'YES' )

任何建议都非常感谢。

1 个答案:

答案 0 :(得分:0)

所以仍然存在分类法元的问题但是我能够通过限制分类法本身来实现我所追求的结果并清理代码添加对所需的post meta的特定调用以及任何人发现它有用:)

因此,此代码通过post meta和taxonomy过滤,然后按分类标题对帖子进行排序。

注意:在我的SQL上解决生锈问题,更容易命名对Joins的特定调用以及额外的元数据等,以便更容易提取和识别。

A
相关问题