Sql WooCommerce产品按sku列表的快捷码订单
是否有办法通过产品sku列表将WooCommerce产品短代码修改为订单 搜索引擎向页面发送包含sku列表的帖子。该页面应以与http post相同的顺序显示产品 示例php和mysql select(像这样的代码在我的旧商店系统中工作,在那里我可以使用SQL语法): 我如何使用woocommerce的产品快捷码来执行示例中的“orderby”,或者是否有更好的方法使用woocommerce来执行此操作Sql WooCommerce产品按sku列表的快捷码订单,sql,wordpress,woocommerce,shortcode,product,Sql,Wordpress,Woocommerce,Shortcode,Product,是否有办法通过产品sku列表将WooCommerce产品短代码修改为订单 搜索引擎向页面发送包含sku列表的帖子。该页面应以与http post相同的顺序显示产品 示例php和mysql select(像这样的代码在我的旧商店系统中工作,在那里我可以使用SQL语法): 我如何使用woocommerce的产品快捷码来执行示例中的“orderby”,或者是否有更好的方法使用woocommerce来执行此操作 感谢您的每一个答案。在Gavin的帮助下以及 我找到了这个解决方案: functio
感谢您的每一个答案。在Gavin的帮助下以及 我找到了这个解决方案:
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);
在Gavin的帮助下,代码来自 我找到了这个解决方案:
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);
如果不进行测试,我无法100%确定,可能会将
字段(sku,$sku)
作为短代码中的order
参数传递。i、 e.[products skus=“foo,bar,baz”orderby=“FIELD(sku,'foo,bar,baz')”order=“asc”]
我已经试过了——不幸的是,它不起作用。我认为这可能是一个长期的尝试。我能想到的唯一替代方法是手动覆盖短代码结果,并根据提供的ID/SKU对结果进行排序。好的,谢谢Gavin。你有代码示例吗?只要您只匹配产品id而不是SKU,以上看起来是一个可行的解决方案。如果不进行测试,我无法100%确定,可能会将字段(SKU,$SKU)
作为短代码中的order
参数传递。i、 e.[products skus=“foo,bar,baz”orderby=“FIELD(sku,'foo,bar,baz')”order=“asc”]
我已经试过了——不幸的是,它不起作用。我认为这可能是一个长期的尝试。我能想到的唯一替代方法是手动覆盖短代码结果,并根据提供的ID/SKU对结果进行排序。好的,谢谢Gavin。你有代码示例吗?只要您只匹配产品id而不匹配SKU,以上看起来是一个可行的解决方案。