在复杂的设置上工作,我们在具有不同前缀的同一数据库上安装了2个单独的Wordpress .
我需要对站点A的站点A的产品进行一些查询 .
由于我主要使用内置的WP函数,因此我的SQL变得有点生疏了 .
在网站A上我使用get_terms使用元查询循环分类,然后对每个帖子进行另一个查询 .
在网站B上我想做一个自定义的$ wpdb查询并让它几乎在我检查post meta值然后按照分类名称排序,如下所示:
$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 回答
因此仍然存在分类法元的问题,但我能够通过限制分类法本身来实现我所追求的结果并清理代码添加特定调用所需的post meta以及任何人发现它有用:)
因此,此代码通过post meta和taxonomy过滤,然后按分类 Headers 对帖子进行排序 .
注意:在我的SQL上解决生锈问题,更容易命名对Joins的特定调用和额外的meta等,以便更容易提取和识别 .