按特定顺序显示WooCommerce产品



我需要通过列出SKU的/ID来按特定顺序显示WooCommerce产品。使用短代码或自定义循环。

例如,我想按照这个顺序显示以下产品:

[products ids="1,3,2"]

我不能使用菜单顺序,因为顺序会根据页面的不同而不同:

第1页:[products ids="1,3,2"]

第2页:[products ids="3,2,1"]

我试了下面的建议,但似乎没有什么改变:

[products ids="1,3,2" orderby="post__in"]

产品仍按默认订单发货。

您可以通过这样的扩展来嵌入woocommerce默认产品-

add_shortcode( 'custom-products-ordering', 'custom_products_ordering_callback' );
function custom_products_ordering_callback( $attr ) {
global $wpdb;
$orderby = $attr['orderby'];
$columns = $attr['columns'];
$limit = $attr['limit'];
$paginate = $attr['paginate'];

$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;

$query = $wpdb->get_results("SELECT post.`ID` FROM `wp_posts` AS post, `wp_postmeta` AS postmeta WHERE post.`ID` = postmeta.`post_id` AND post.`post_type` = 'shop_order' AND postmeta.`meta_key` = '_customer_user' AND postmeta.`meta_value` = '".$current_user_id."'");   
foreach( $query as $key => $value ){
$filter = $value->ID;
}

$product_ids_str = implode( ",", $filter );

return do_shortcode("[products ids='".$product_ids_str."' columns='".$columns."' limit='".$limit."' paginate='".$paginate."' orderby = '".$orderby."']");
}

如何使用is -

[custom-products-ordering column="4" limit="12" paginate="true" orderby="post__in"]

您可以通过修改查询来扩展或排序您想要的任何内容。

最新更新