在WP WooCommerce中按更多字段排序,可以通过以下步骤实现:
add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_catalog_orderby');
function custom_woocommerce_catalog_orderby($args)
{
$orderby_value = isset($_GET['orderby']) ? wc_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby'));
if ('custom_field' == $orderby_value) {
$args['orderby'] = 'meta_value_num';
$args['order'] = 'desc';
$args['meta_key'] = 'custom_field'; // 替换为你创建的自定义字段的名称
}
return $args;
}
这段代码将会在排序选项中添加一个名为“custom_field”的选项,并按照该字段进行排序。
<form class="woocommerce-ordering" method="get">
<select name="orderby" class="orderby">
<option value="menu_order" <?php selected($orderby, 'menu_order'); ?>><?php _e('Default sorting', 'woocommerce'); ?></option>
<option value="popularity" <?php selected($orderby, 'popularity'); ?>><?php _e('Sort by popularity', 'woocommerce'); ?></option>
<option value="rating" <?php selected($orderby, 'rating'); ?>><?php _e('Sort by average rating', 'woocommerce'); ?></option>
<option value="date" <?php selected($orderby, 'date'); ?>><?php _e('Sort by newness', 'woocommerce'); ?></option>
<option value="price" <?php selected($orderby, 'price'); ?>><?php _e('Sort by price: low to high', 'woocommerce'); ?></option>
<option value="price-desc" <?php selected($orderby, 'price-desc'); ?>><?php _e('Sort by price: high to low', 'woocommerce'); ?></option>
<option value="custom_field" <?php selected($orderby, 'custom_field'); ?>><?php _e('Sort by custom field', 'woocommerce'); ?></option> // 添加这一行代码
</select>
<input type="hidden" name="paged" value="1" />
<?php wc_query_string_form_fields(null, array('orderby', 'submit', 'paged', 'product-page')); ?>
</form>
这段代码将在排序选项中添加一个名为“Sort by custom field”的选项。
完成以上步骤后,你就可以在WP WooCommerce中按更多字段进行排序了。请注意,上述代码中的“custom_field”需要替换为你实际创建的自定义字段的名称。
领取专属 10元无门槛券
手把手带您无忧上云