我有一个扩展来计算我的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有什么问题吗?