【问题标题】:Sorting by different meta keys woocommerce/wordpress按不同的元键 woocommerce/wordpress 排序
【发布时间】:2021-08-31 07:51:32
【问题描述】:

假设我有 3 个产品。

Woocommerce 有默认的 meta_key: _price 显示正常价格。

产品A:meta_key:_price,价值:80

产品 B:meta_key:_price,value:90,meta_key:_custom_price,value:70

产品C:meta_key:_price,价值:100

在进行 ASC 排序时,我的期望是:B、A、C

但它按 _price 排序:A、B、C

有什么办法解决这个问题吗?

$loop = new WP_Query(array(
    'post_type'=>'product',
    'meta_query' => array(
        'relation' => 'OR',
        'custom_price' => array(
            'key' => '_custom_price',
            'compare' => 'EXISTS'
        ),
        'price' => array(
            'key' => '_price',
            'compare' => 'EXISTS'
        ),
    ),
    'orderby' => array(
        'custom_price' => 'ASC',
        'price' => 'ASC'
    ),
));

while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
wp_reset_query();

【问题讨论】:

  • 您需要添加自定义钩子来修改排序子句。 asarosenberg.se/code/…
  • @VickyP 感谢您的回复!我试过了,但它不工作......任何想法为什么? function customorderby($orderby) { return '_price.meta_value DESC, _meta_price.meta_value+0 DESC'; } $args = 数组('post_type' => '产品','meta_key' => '_price','meta_query' => 数组(数组('key' => '_price'),数组('key' => '_meta_price', ), ) ); add_filter('posts_orderby','customorderby'); $query = new WP_Query($args); remove_filter('posts_orderby','customorderby');

标签: php wordpress sorting woocommerce


【解决方案1】:

尝试此自定义查询并根据要求设置顺序 (ASC/DESC)

$sql = "
SELECT *, GREATEST( m1.meta_value, m2.meta_value) AS sell_price,
FROM wp_posts
INNER JOIN wp_postmeta m1
ON (wp_posts.ID = m1.post_id )
INNER JOIN wp_postmeta m2
ON (wp_posts.ID = m2.post_id )
WHERE wp_posts.post_type   = 'product'
AND   wp_posts.post_status = 'publish'
AND ( m1.meta_key = '_price' )
AND ( m2.meta_key = '_custom_price')
GROUP BY wp_posts.ID
ORDER BY sell_price
ASC";

$products = $wpdb->get_results($sql);

print_r($products);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多