WordPress过滤器由product_cat发布

时间:2016-12-07 04:38:15

标签: php wordpress codex

我无法按产品类别过滤帖子(产品)。尝试过几种方式,我是新手。

在我的归档产品模板上,我来执行一个报告(通过SQLREPORTS插件),并带有以下查询:

SELECT `post_title` AS Alumno, `comment_author` AS 'Profesor',  `comment_date`  AS 'Fecha', `comment_content` AS 'Nota' 
FROM `xi00_3_comments` 
INNER JOIN `xi00_3_posts` ON `comment_post_ID`=`ID` 
WHERE `comment_author` != 'WooCommerce'
AND DATE(comment_date) BETWEEN DATE_ADD(DATE_ADD(NOW(),INTERVAL -1 MONTH), INTERVAL 0 DAY) AND DATE(NOW())
AND comment_approved = '1'
ORDER BY `xi00_3_comments`.`comment_date` DESC 

它运行得很好,我得到了所有帖子的所有评论。 (我的页面现在按产品类别进行过滤。)

我设法获得当前类别的值:(比如值'3b')

   [query_vars] => Array
    (
        [product_cat] => 3b

$category =  get_query_var('product_cat','msg if not set');

您是否可以帮助我如何构建查询以包含分类并将帖子限制为具有给定产品类别的帖子? 我知道我需要包含分类和术语,但无法弄明白。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您需要进行2次更改:

  1. 内部联接帖子表(xi00_3_posts)到评论表(xi00_3_comments)。
  2. 内部联接帖子表(xi00_3_posts)到术语关系表(xi00_3_term_relationships),用于选择类别。
  3. 注意我在下面的示例中使用10作为term_taxonomy_id

    SELECT `post_title` AS Alumno, `comment_author` AS 'Profesor',  `comment_date`  AS 'Fecha', `comment_content` AS 'Nota'  FROM `xi00_3_posts`  INNER JOIN `xi00_3_comments` ON `ID`=`comment_post_ID` INNER JOIN `xi00_3_term_relationships` ON (`ID` = `object_id`)  WHERE `comment_author` != 'WooCommerce'  AND ( `term_taxonomy_id` IN (10) )  AND DATE(comment_date) BETWEEN DATE_ADD(DATE_ADD(NOW(),INTERVAL -1 MONTH), INTERVAL 0 DAY) AND DATE(NOW()) AND comment_approved = '1' ORDER BY `xi00_3_comments`.`comment_date` DESC