Wil*_*der 1 wordpress shortcode woocommerce
我想编辑WooCommerce Recent Products Shortcode,以便将查询限制为过去15天内发布的产品.我不知道该怎么做.这是短代码的代码:
/**
* Recent Products shortcode
*
* @param array $atts
* @return string
*/
public static function recent_products( $atts ) {
global $woocommerce_loop;
$atts = shortcode_atts( array(
'per_page' => '12',
'columns' => '4',
'orderby' => 'date',
'order' => 'desc'
), $atts );
$meta_query = WC()->query->get_meta_query();
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $atts['per_page'],
'orderby' => $atts['orderby'],
'order' => $atts['order'],
'meta_query' => $meta_query
);
ob_start();
$products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) );
$columns = absint( $atts['columns'] );
$woocommerce_loop['columns'] = $columns;
if ( $products->have_posts() ) : ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ( $products->have_posts() ) : $products->the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php endif;
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
}
Run Code Online (Sandbox Code Playgroud)
我想我需要以某种方式检索循环中帖子的发布日期,将其放入变量中,并添加一些内容,以检查该变量是否少于15天?这些步骤超出了我的能力范围.
最好不要直接在核心中修改WooCommerce短代码.您需要删除他们的短代码并添加自己的短代码.或者现在我看起来更接近,我看到他们已经提供了woocommerce_shortcode_products_query用于修改查询args 的过滤器.
$products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) );
Run Code Online (Sandbox Code Playgroud)
接下来,您需要一些日期参数WP_Query
过滤woocommerce_shortcode_product_queryargs时,可以设置date_query参数WP_Query.
function so_31541643_recent_products_shortcode_args( $args, $atts ){
$args['date_query'] = array(
array(
'after' => '15 days ago',
'inclusive' => true,
),
);
return $args;
}
add_filter( 'woocommerce_shortcode_products_query', 'so_31541643_recent_products_shortcode_args', 10, 2 );
Run Code Online (Sandbox Code Playgroud)
完全未经测试,在测试之前不要在生产中使用.
| 归档时间: |
|
| 查看次数: |
7538 次 |
| 最近记录: |