mysql - Woocommerce 3.0 相关产品过滤

标签 mysql wordpress woocommerce

有没有办法从相关产品部分中排除具有特定值属性的产品。例如,我想要按类别列出相关产品,但具有属性 attribute_value('pa_season') = Summer;

的产品除外

我尝试了这个,但它不起作用

add_filter( 'woocommerce_related_products_args', 'filter_related_products' );
function filter_related_products( $args ) {
    global $product;
    return array(
       'post_type'            => 'product',
       'ignore_sticky_posts'  => 1,
       'no_found_rows'        => 1,
       'posts_per_page'       => 4,
       'orderby'              => 'ASC',
       'post__not_in'         => array( $product->get_id() ),
       'tax_query'      =>     array(
              array(
                  'taxonomy' => 'pa_epoxi',
                  'field' => 'slug',
                  'terms' => 'autumn-winter'
              )
        )
    );
}

编辑:我发现我可以使用过滤器 woocommerce_product_related_posts_query编辑从数据库获取相关产品的查询。

我尝试了以下代码:

add_filter( 'woocommerce_product_related_posts_query', function( $query ) {
    $query['where'] .= " AND t.term_id !=100";
    return $query;
});

但我收到错误报告:“where 子句”中的未知列“t.term_id”

最佳答案

我设法使用过滤器woocommerce_product_related_posts_query排除我想要的术语ID并像这样编辑 SQL 查询:

function exclude_terms_from_related_products( $query ) {
    global $wpdb;
    $exclude_term_ids[0] = 100; // term_id
    $query['join']  .= " LEFT JOIN ( SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ( " . implode( ',', array_map( 'absint', $exclude_term_ids ) ) . ' ) ) AS exclude_join1 ON exclude_join1.object_id = p.ID';
    $query['where'] .= ' AND exclude_join1.object_id IS NULL';
    return $query;
}
add_filter( 'woocommerce_product_related_posts_query', 'exclude_terms_from_related_products' );

关于mysql - Woocommerce 3.0 相关产品过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668404/

相关文章:

mysql - 如何写Nhibernate Query C# .net Mysql

mysql - 如何首次向 SQL 数据库填充多个表

mysql - 计算列中逗号分隔值的数量 - sql

php - 更改 Woocommerce 存款插件付款计划中的百分比小数精度

javascript - 将复杂的 html/css/js 元素添加到单个 Wordpress 页面

mysql - 查找没有存储过程的相邻行

mysql - Wordpress 限制查询结果

php - WooCommerce:基于付款方式的订单状态

css - 如何将产品标题放入产品缩略图

php - Woocommerce 中产品批量保存完成后可用哪个钩子(Hook)