允许按 WooCommerce 存档页面上的特色对产品进行排序
Allow to sort products by featured on WooCommerce archive pages
我正在尝试让用户能够按特色对商店页面上的产品进行排序。为此,我使用以下代码:
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=featured 但除了没有找到符合请求的产品的消息外,没有显示任何内容。但我知道在管理面板中我有超过 10 种产品标记为特色。请帮助解决这个问题 issue.I 需要确保理解我做错了什么。
自 Woocommerce 3 以来,您的代码有点过时和弃用,其中特色产品现在设置为术语名称 featured
的 product_visibility
分类法,因此需要以不同的方式处理如下:
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 文件。已测试并有效。
相关:
我正在尝试让用户能够按特色对商店页面上的产品进行排序。为此,我使用以下代码:
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=featured 但除了没有找到符合请求的产品的消息外,没有显示任何内容。但我知道在管理面板中我有超过 10 种产品标记为特色。请帮助解决这个问题 issue.I 需要确保理解我做错了什么。
自 Woocommerce 3 以来,您的代码有点过时和弃用,其中特色产品现在设置为术语名称 featured
的 product_visibility
分类法,因此需要以不同的方式处理如下:
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 文件。已测试并有效。
相关: