在页面上显示 Woocommerce 中 £50 - £100 之间的所有产品
Display on a page all products between £50 - £100 in 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;
}
将class用作between-50-100
我正在我的网站上设置一个“按价格购物”下拉菜单,您会在其中看到几个显示特定价格范围内所有产品的页面。
感谢
但我的问题是当我尝试指定一个价格范围(例如 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;
}
将class用作between-50-100