php - 在页面上显示 Woocommerce 中 50 英镑到 100 英镑之间的所有产品
问题描述
我在我的网站上设置了“按价格购物”下拉菜单,您会在其中看到几个页面,显示特定价格范围的所有产品。
感谢在页面上显示 Woocommerce 答案代码中低于特定价格的所有产品,我让它适用于“低于 50 英镑”和“高于 600 英镑”。
但我的问题是当我尝试指定价格范围时,例如 50 - 100 英镑。
关于如何将最小值和最大值提供给类似下面的函数的任何想法?
任何帮助表示赞赏,谢谢。
解决方案
我不熟悉 wordpress,但是您可以通过这种方式编辑该功能以获得所需的内容。
add_filter( 'woocommerce_shortcode_products_query', 'products_based_on_price', 10, 3 );
function products_based_on_price( $query_args, $atts, $loop_name ) {
if( ! ( isset($atts['class']) && ! empty($atts['class']) ) )
return $query_args;
if (strpos($atts['class'], 'below-') !== false) {
$compare = '<';
$slug = 'below-';
} elseif (strpos($atts['class'], 'above-') !== false) {
$compare = '<';
$slug = 'above-';
} elseif (strpos($atts['class'], 'between-') !== false) {
$compare = '<>';
$slug = 'between-';
}
if( isset($compare) ) {
if(strlen( $compare == 1))
{
$query_args['meta_query'][] = array(
'key' => '_price',
'value' => (float) str_replace($slug, '', $atts['class']),
'type' => 'DECIMAL',
'compare' => $compare,
);
}
else
{
foreach( str_split($compare) as $key => $value )
{
$query_args['meta_query'][] = array(
'key' => '_price',
'value' => (float) explode('-', str_replace($slug, '', $atts['class']))[$key],
'type' => 'DECIMAL',
'compare' => $value,
);
}
}
}
return $query_args;
}
使用类作为between-50-100
推荐阅读
- c++ - 架构 x86_64 的未定义符号:“operator<<”
- javascript - 如何在 Javascript 中进行 2 个连续的 API 调用?
- python - 用 html 表的第一行更新 excel 文件(pandas/python)
- unity3d - 使用 VR 耳机时 Input.GetAxis("Mouse X") 和 Input.GetAxis("Mouse Y") 的响应不正确
- html - 删除列和内容之间的间距
- python - openpyxl:ValueError:对已关闭文件的 I/O 操作
- python - python cesar密码问题
- jquery - 使用 jquery ajax json 从 spring rest api 接收数据到 HTML
- mysql - Dll 未找到异常 MYSQL Connector-.Net
- python - 如何根据来自配置文件(文本或 CSV)的用户输入过滤熊猫数据框 配置将告诉过滤器值和用于过滤的列