WooCommerce 产品简码按 sku 列表排序

WooCommerce products shortcode order by sku list

有没有办法修改 WooCommerce 产品短代码以按产品 sku 列表订购?

搜索引擎向包含 sku 列表的页面发送 Post。该页面应以与 http post 相同的顺序显示产品。

示例 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);

如何使用 woocommerce 的产品简码来实现 "orderby" 示例,或者有更好的方法使用 woocommerce 来做到这一点吗?

感谢您的每一个回答。

在 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);