【发布时间】:2016-02-09 11:12:01
【问题描述】:
如何在 woocommerce 产品价格过滤器短代码 [products_by_price min="100" max="300"] 中将查询限制为 6?以下代码基于 woocommerce 产品短代码,遗憾的是不支持 per_page。在这种情况下,我需要将查询限制为 6 以避免显示所有产品。
add_shortcode( 'wc_products_price_range', 'wc_products_price_range' );
function wc_products_price_range( $atts, $content, $shortcode ) {
if ( class_exists( 'WooCommerce' ) ) {
$shortcodes = new WC_Shortcodes();
if ( is_array( $atts ) ) {
$min = (int) $atts['min'];
$max = (int) $atts['max'];
if ( $min && $max ) {
$and = "meta_value BETWEEN $min AND $max";
} else {
if ( $min ) {
$and = "meta_value >= $min";
} elseif ( $max ) {
$and = "meta_value <= $max";
}
}
if ( $and ) {
global $wpdb;
$query = "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_price' AND $and";
$ids = $wpdb->get_col( $query );
if ( ! empty( $ids ) ) {
$atts['ids'] = implode( ",", $ids );
}
}
}
return $shortcodes->products( $atts );
}
}
【问题讨论】:
标签: wordpress woocommerce limit