Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改特定Woocommerce产品类别归档页面的默认排序_Php_Wordpress_Sorting_Woocommerce_Custom Taxonomy - Fatal编程技术网

Php 更改特定Woocommerce产品类别归档页面的默认排序

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(''

我需要将网站上特定产品类别的默认产品排序选项更改为“Newness”。我知道你可以进入WooCommerce>Settings>Product>Display全局更改默认排序选项,但这不是我需要做的。我需要像这样的东西:

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短代码。除非您创建了自定义排序单,在这种情况下,我仍然会推荐创建自定义页面模板并查询特定类别。这是一个可靠的解决方法,好主意。如果我无法很快找到解决方案,那么我将使用短代码并将其标记为正确。听起来不错。仅供将来参考,以防您想知道我在哪里读到这些包含的短代码,