WooCommerce产品通过sku列表进行短代码订购

时间:2016-05-10 15:04:18

标签: sql wordpress woocommerce shortcode product

有没有办法修改WooCommerce产品的短代码,以便通过产品清单来订购?

搜索引擎将帖子发送到包含sku列表的页面。页面应以http帖子的相同顺序显示产品。

示例php和mysql select(这样的代码在我的旧商店系统中工作,我可以使用SQL语法):

$_POST['skus'] = "51,57,34,12,111";
$skus = $_POST['skus'];

select * from products where sku in ('$skus') order by FIELD(sku,'$skus);

我怎样才能做一个" orderby"比如来自woocommerce的产品短代码的例子,还是有更好的方法来做这个与woocommerce?

感谢您的每一个答案。

1 个答案:

答案 0 :(得分:0)

在Gavin的帮助下和https://wordpress.stackexchange.com/a/67830/43362的代码 我找到了这个解决方案:

    function wpse67823_orderby_post_in($orderby, $query){

     //Remove it so it doesn't effect future queries
     remove_filter(current_filter(), __FUNCTION__);

     $post__in = $_POST['skus'];

     $post__in = str_replace(',','\',\'',$post__in);

     return "FIELD(CAST(mt2.meta_value AS CHAR), '$post__in' )";
     } 

    //Add filter and perform query
    add_filter('posts_orderby','wpse67823_orderby_post_in',10,2);

    echo do_shortcode('[products skus="'.$skus.'" orderby="sku"]');

    remove_filter('posts_orderby','wpse67823_orderby_post_in',10,2);