Cách tạo shortcode random sản phẩm sau khi tải lại trang

Cách tạo shortcode random sản phẩm sau khi tải lại trang

Bạn muốn mỗi lần F5 (tải lại trang web) thì sản phẩm của khối đó sẽ thay đổi để khách hàng thấy rằng bên website đa dạng sản phẩm thì đây là bài viết dành cho bạn tạo shortcode random sản phẩm!

Đầu tiên, bạn vào file functions.php của theme chính (nếu có child theme thì vào child theme để cập nhật sẽ không bị mất) sau đó bạn copy code này vào:

add_shortcode( 'random_products', 'cris_random_products' );

function cris_random_products(  ) {


	$meta_query = WC()->query->get_meta_query();

	$args = array(
		'post_type'				=> 'product',
		'post_status'			=> 'publish',
		'ignore_sticky_posts'	=> 1,
		'posts_per_page' 		=> '24',
		'orderby'               => 'rand',
		'meta_query' 			=> $meta_query
	);

	ob_start();

	$products = new WP_Query( $args );

	$columns = '4';
	$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>';
}

Sau đó, bạn sử dụng với hình thức call ra vị trí cần xuất hiện bằng Hook hoặc tại file bạn cần thêm vào:

<?php echo do_shortcode('[random_products]'); ?>

Kết luận: 

Với hướng dẫn tạo shortcode random sản phẩm trên bạn có thể sửa lại số lượng sản phẩm trên trang (posts_per_page), số lượng sản phẩm trên 1 hàng (columns), cách hiện (orderby) và hơn hết bạn vẫn có thể đổi post type từ product sang post!

Lưu ý rằng:  layout trên đang kế thừa từ layout của template content product (wc_get_template_part), nếu bạn dùng theme có hook đè lên thì columns sẽ xuất hiện trong cài đặt global của bạn. Với trường hợp này mình vẫn có thể custom layout bằng các thêm HTML trực tiếp sau hàm <?php while ( $products->have_posts() ) : $products->the_post(); ?> và call ra image product, price, các attributes mà bạn muốn gọi ra. Hãy xem kỹ tài liệu của woocommerce trước khi custom layout nhé!

 

Thông tin về Azwell

Với Azwell - Cùng bạn đi đến thành công thì sứ mệnh của Azwell luôn ở bên khách hàng và hỗ trợ sớm nhất các yêu cầu khi khách hàng sử dụng dịch vụ tại Azwell. 

Azwell luôn đưa ra mức chi phí phù hợp và tối ưu nhất, Azwell sử dụng cơ chế tính phí Flexible giúp Quý khách hàng tiết kiệm được từ 40-60% chi phí khi sử dụng dịch vụ bên khác.

Về chúng tôi

Liên hệ

Bạn đang tìm kiếm