Php 更改特定Woocommerce产品类别归档页面的默认排序
我需要将网站上特定产品类别的默认产品排序选项更改为“Newness”。我知道你可以进入WooCommerce>Settings>Product>Display全局更改默认排序选项,但这不是我需要做的。我需要像这样的东西:Php 更改特定Woocommerce产品类别归档页面的默认排序,php,wordpress,sorting,woocommerce,custom-taxonomy,Php,Wordpress,Sorting,Woocommerce,Custom Taxonomy,我需要将网站上特定产品类别的默认产品排序选项更改为“Newness”。我知道你可以进入WooCommerce>Settings>Product>Display全局更改默认排序选项,但这不是我需要做的。我需要像这样的东西: function change_default_sorting_option(){ if(is_product_category('3555')){ //change default sorting option to newness } } add_action(''
function change_default_sorting_option(){
if(is_product_category('3555')){
//change default sorting option to newness
}
}
add_action('', 'change_default_sorting_option');
我没有做太多的排序功能,所以我不确定从哪里开始。我知道该函数应该放在我的子主题的functions.php中。假设您在自定义页面模板中工作,这应该相对容易。不完全确定您的方法是否可以利用is_page()强制更改产品的排序,但是。。。您可以利用全局
WP\u查询
创建自定义查询,根据需要对产品进行排序。下面是一个例子:
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => -1, //or... set your post per page and utilize pagination if required.
'orderby' => 'title',
'order' => 'ASC',
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
//this is where you can output your products
//which will be ordered according to the set arguments above.
endwhile;
wp_reset_query();
?>
假设您在自定义页面模板中工作,这应该相对容易。不完全确定您的方法是否可以利用is_page()强制更改产品的排序,但是。。。您可以利用全局
WP\u查询
创建自定义查询,根据需要对产品进行排序。下面是一个例子:
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => -1, //or... set your post per page and utilize pagination if required.
'orderby' => 'title',
'order' => 'ASC',
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
//this is where you can output your products
//which will be ordered according to the set arguments above.
endwhile;
wp_reset_query();
?>
以下是获取特定产品类别归档页面的正确钩子和方法,即按“新性”进行默认排序:
add_filter('woocommerce_get_catalog_ordering_args','custom_catalog_ordering_args',20,1);
函数自定义目录排序参数($args){
$product_category='t-SHERTS';//以下是获取特定产品类别归档页面的正确钩子和方法,即按“新性”进行默认排序:
add_filter('woocommerce_get_catalog_ordering_args','custom_catalog_ordering_args',20,1);
函数自定义目录排序参数($args){
$product_category='t-SHERTS';//这里是更好的工作解决方案
add_filter('woocommerce_get_catalog_ordering_args', 'woocommerce_catalog_orderby');
function woocommerce_catalog_orderby( $args ) {
if( is_product_category( 'shirts' ) ) { // <- define category slug- returns true or false
$args['orderby'] = 'meta_value_num';
$args['order'] = 'ASC'; // <- order ASC or DESC
$args['meta_key'] = '_price'; // <- _price is meta_value_num's key - required
}
return $args;
}
add_filter('woocommerce_get_catalog_ordering_args','woocommerce_catalog_orderby');
函数:商业\目录\订购人($args){
如果(是产品类别(‘衬衫’){/这里是更好的工作解决方案
add_filter('woocommerce_get_catalog_ordering_args', 'woocommerce_catalog_orderby');
function woocommerce_catalog_orderby( $args ) {
if( is_product_category( 'shirts' ) ) { // <- define category slug- returns true or false
$args['orderby'] = 'meta_value_num';
$args['order'] = 'ASC'; // <- order ASC or DESC
$args['meta_key'] = '_price'; // <- _price is meta_value_num's key - required
}
return $args;
}
add_filter('woocommerce_get_catalog_ordering_args','woocommerce_catalog_orderby');
函数:商业\目录\订购人($args){
如果(是产品类别(“衬衫”)){//嘿,谢谢你的回答。我实际上是想在一个特定的类别上完成这项工作**我会更新我的原始问题。但是在类别页面上,有一个产品循环排序功能,即)新鲜度、价格:低、价格:高等。我需要更改function.phpSe中特定类别的默认值电子编辑解决方案,我建议您为此使用内置的woo commerce短代码。除非您已经创建了自定义排序顺序,在这种情况下,我仍然建议创建自定义页面模板并查询特定类别。这是一个可靠的解决方法,好主意。如果我无法很快找到解决方案,那么我将将使用短代码并将其标记为正确。听起来不错。仅供将来参考,以防您想知道我在哪里读到这些包含的短代码,嘿,谢谢您的回答。我实际上是在一个特定的类别上完成此操作**我将更新我的原始问题。但是在类别页面上,有一个sorting产品循环的功能(即)新颖性、价格:低、价格:高等。我需要更改function.phpSee编辑解决方案中特定类别的默认值。我建议您为此使用内置的woo commerce短代码。除非您创建了自定义排序单,在这种情况下,我仍然会推荐创建自定义页面模板并查询特定类别。这是一个可靠的解决方法,好主意。如果我无法很快找到解决方案,那么我将使用短代码并将其标记为正确。听起来不错。仅供将来参考,以防您想知道我在哪里读到这些包含的短代码,