woocommerce - 为排序和订购 WooCommerce 产品的排序选项添加自定义属性
问题描述
我希望在我的网站上能够订购产品页面(woocommerce)以及经典设置
- 按人气排序
- 按平均评分排序
- 按新鲜度排序
- 按价格排序:从低到高
- 按价格排序:从高到低
而且还具有所有产品中都存在的属性
- 按我的自定义属性排序:从低到高
- 按我的自定义属性排序:从高到低
我找到了各种关于它的帖子并进行了几次测试......但我不是程序员......我仍然无法解决问题。
我找到了这篇文章
https://docs.woocommerce.com/document/custom-sorting-options-ascdesc/
解释如何添加
- 随机排序
它工作正常,但我不明白,从这段代码开始,你需要添加/修改什么来用我的自定义属性替换随机。
我的属性名称是“pa_kj” 它的值是字母数字
我提前感谢大家的任何建议
解决方案
我在网上找到了这段代码
https://gist.github.com/bekarice/0df2b2d54d6ac8076f84
<?php
/**
* Adds WooCommerce catalog sorting options using postmeta, such as custom fields
* Tutorial: http://www.skyverge.com/blog/sort-woocommerce-products-custom-fields/
**/
function skyverge_add_postmeta_ordering_args( $sort_args ) {
$orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
switch( $orderby_value ) {
// Name your sortby key whatever you'd like; must correspond to the $sortby in the next function
case 'location':
$sort_args['orderby'] = 'meta_value';
// Sort by meta_value because we're using alphabetic sorting
$sort_args['order'] = 'asc';
$sort_args['meta_key'] = 'location';
// use the meta key you've set for your custom field, i.e., something like "location" or "_wholesale_price"
break;
case 'points_awarded':
$sort_args['orderby'] = 'meta_value_num';
// We use meta_value_num here because points are a number and we want to sort in numerical order
$sort_args['order'] = 'desc';
$sort_args['meta_key'] = 'points';
break;
}
return $sort_args;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'skyverge_add_postmeta_ordering_args' );
// Add these new sorting arguments to the sortby options on the frontend
function skyverge_add_new_postmeta_orderby( $sortby ) {
// Adjust the text as desired
$sortby['location'] = __( 'Sort by location', 'woocommerce' );
$sortby['points_awarded'] = __( 'Sort by points for purchase', 'woocommerce' );
return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'skyverge_add_new_postmeta_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'skyverge_add_new_postmeta_orderby' );
但它不适用于最新版本的 Woocommerce,它总是返回没有找到产品的页面。
有没有经验的人可以推荐要修改的代码?
再次感谢
推荐阅读
- java - 从文件中获取 WEB_URL
- android - 如何处理 BillingClient.onBillingServiceDisconnected()?
- javascript - 我需要一种方法,我的机器人可以用 8ball 命令之类的随机响应进行响应
- c++ - 如何在 C++ 中实现“反向应用功能”?
- java - 如何添加多个反应以嵌入 Discord JDA
- powershell - 当我尝试通过 Get-scheduleTask 获取任务时显示错误
- python - 如果不使用网格坐标,您将如何计算您在棋盘上跳过的正方形?
- postgresql - PostgreSQL 和事务上的 Debezium CDC
- html - 背景颜色属性不适用于悬停选择器
- javascript - 防止鼠标单击父绝对元素