我有这个功能:
function test_q($atts){
$args = shortcode_atts(array(
'post_type' => 'product',
'columns' => 4,
'posts_per_page' => 12,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'mugs' ),
),
array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => array( 'football' ),
),
),
), $atts);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
woocommerce_product_loop_start();
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
woocommerce_product_loop_end();
} else {
echo __( 'No products found' );
}
woocommerce_reset_loop();
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
} add_shortcode('testasd','test_q');
我想用短代码将动态参数传递给'mugs'和'football'。我按类别和标签过滤产品。这个函数工作正常,但我想通过短代码传递这两个参数,使其动态化。 我需要每次使用不同的“马克杯”和“足球”术语来调用此短代码。例如'T恤'和'篮球'。我该怎么做?
答案 0 :(得分:0)
您可以通过提取短代码并通过短代码中的$ atts传递值来轻松完成。
在你的论点之后,你可以像下面那样传递它,
if($args['tax_query']['taxonomy'] == 'product_cat'){
$args['tax_query']['terms'] = $atts['terms_cat'];
}
if($args['tax_query']['taxonomy'] == 'product_tag'){
$args['tax_query']['terms'] = $atts['terms_tag'];
}
然后在短代码中添加2个参数,
[testasd terms_cat='t-shirts' terms_tag='basketball']