有没有办法修改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?
感谢您的每一个答案。
答案 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);