wooccommerce产品短代码模板



据我所知

[products limit="4"columns="4〃on_sale="true"]将显示所有在售产品,

[products limit="3"columns="3"bestrongelling="true"]将显示最畅销的产品,

如果我没有错的话,两个短代码都会调用content-product.php文件来显示产品。

我的问题是,如何让不同的产品快捷方式调用不同的php模板文件来显示相关产品,而不是调用同一个文件content-product.php?

例如,

出售的短代码调用content-product-1.php

最畅销的短代码调用content-product-2.php

谢谢!

创建我们自己的快捷代码以显示特定产品和我们自己的模板,如下所示,例如,wc_get_template_part("内容"、"产品测试"(;

add_shortcode( 'sale_products_test', 'sale_products' );
function sale_products( $atts ){
global $woocommerce_loop, $woocommerce;
extract( shortcode_atts( array(
'per_page'      => '12',
'columns'       => '3',
'orderby'       => 'title',
'category'      => 'clearance',
'order'         => 'asc'
), $atts ) );
// Get products on sale
$product_ids_on_sale = woocommerce_get_product_ids_on_sale();
$meta_query = array();
$meta_query[] = $woocommerce->query->visibility_meta_query();
$meta_query[] = $woocommerce->query->stock_status_meta_query();
$args = array(
'posts_per_page'=> $per_page,
'orderby'       => $orderby,
'order'         => $order,
'no_found_rows' => 1,
'post_status'   => 'publish',
'post_type'     => 'product',
'orderby'       => 'date',
'order'         => 'ASC',
'meta_query'    => $meta_query,
'post__in'      => $product_ids_on_sale,
'tax_query' => array( array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $category,
)),
);
ob_start();
$products = new WP_Query( $args );
$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-test' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php endif;
wp_reset_postdata();
return ob_get_clean();
}

不可能。这种类型的短代码需要使用wp_query并根据需求提取数据

最新更新