我正在尝试使用户能够按功能对商店页面上的产品进行排序。为此,我使用以下代码:
add_filter( 'woocommerce_get_catalog_ordering_args', 'victor_get_catalog_ordering_args' );
function victor_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'featured' == $orderby_value ) {
$args['orderby'] = '_featured';
$args['order'] = 'DESC';
$args['meta_key'] = '_featured';
}
return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'victor_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'victor_catalog_orderby' );
function victor_catalog_orderby( $sortby ) {
$sortby['featured'] = 'Featured';
return $sortby;
}
但这是行不通的。我正在尝试使用以下功能按功能对产品进行排序:/?orderby = feature d但是未显示任何内容,但有一条消息,即未找到用于请求的产品。但是我知道在管理面板中有10多种产品被标记为精选产品。请解决此问题。我需要确保了解我做错了什么。
自Woocommerce 3以来,您的代码已经过时和过时了,在Woocommerce 3中,现在将特色产品设置为product_visibility
术语name的分类法featured
,因此需要按以下不同方式处理:
add_filter( 'woocommerce_catalog_orderby', 'hugo_boss_catalog_orderby' );
function hugo_boss_catalog_orderby( $orderby ) {
$orderby['featured'] = __('Featured', 'woocommerce');
return $orderby;
}
add_action( 'woocommerce_product_query', 'obama_trump_product_query' );
function obama_trump_product_query( $q ) {
if ( ! is_admin() && isset($_GET['orderby']) && 'featured' === esc_attr($_GET['orderby']) ) {
$tax_query = $q->get('tax_query');
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
);
$q->set( 'tax_query', $tax_query );
$q->set( 'order', 'DESC' ); // Or "ASC"
}
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试和工作。
有关:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句