woocommerce自定义排序选项设置为默认值

时间:2017-04-27 18:26:39

标签: php wordpress sorting woocommerce

我有一个扩展来计算我的woocommerce产品的帖子视图。 通过此扩展,我构建了一个自定义排序选项。

我在functions.php中使用了以下代码,我从几个教程中获取了这些代码:

//Sort by views

function views_woocommerce_shop_ordering( $sort_args ) {
  $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

    if ( 'pageviews' == $orderby_value ) {
        $sort_args['orderby'] = 'post_views';
        $sort_args['order'] = 'desc';
    }

    return $sort_args;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'views_woocommerce_shop_ordering' );

function views_custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['pageviews'] = 'Sort by pageviews';
    return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'views_custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'views_custom_woocommerce_catalog_orderby' );
可悲的是,像这样它不起作用。所以我删除了顶部并仅使用了这个:

//PageViews Sorting

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby',30 );

function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['post_views'] = 'Nach Beliebtheit sortiert';
    return $sortby;
}

像这样可行,但是当我在woocommerce后端将此自定义排序选项设置为默认值时,即使在下拉列表中选择了新选项,排序仍会在页面加载时保持默认。 然后我必须设置另一个选项,然后返回自定义排序选项 - 然后它正确地对产品进行排序。

任何人都知道为什么会这样? 我的functions.php有什么问题吗?

0 个答案:

没有答案