ساخت صفحات آرشیو پویای WooCommerce
با این آموزش قالب آرشیو سفارشی WooCommerce میسازید که هم دستهبندی محصولات و هم محصولات را نشان دهد.
همزمان میتوانید با گزینههای Shop page display و Category page display کنترل کنید چه زمانی دستهها یا محصولات نمایش داده شوند.


گام ۱: آمادهسازی محصولات و دستهبندیها
دستهبندیهای محصول را با زیردستهها بسازید. چند محصول اضافه کنید و به دستههای مختلف اختصاص دهید. بهتر است برای هر دسته تصویر بگذارید — در قالب هم نمایش میدهیم.

گام ۲: ساخت آرشیو WooCommerce
نوع قالب درست را انتخاب کنید (WooCommerce - Product archive).
اگر با آرشیو محصول Bricks آشنا نیستید، اینجا بیشتر بخوانید.

شرطهای قالب را در Settings > Template Settings > Conditions تنظیم کنید تا هنگام مرور صفحه Shop و آرشیو دستهها و برچسبهای WooCommerce اعمال شود.

دو حلقه query جدا بسازید و با شرط در فرانتاند یکی را نمایش دهید. در مثال زیر دو section ساخته شده: یکی برای حلقه دستهبندیها و یکی برای محصولات.

گام ۳: بخش دستهبندی محصولات
مهم
هنگام استفاده از echo dynamic tag باید اجرای کد را فعال کنید. نام تابعها را در هوک bricks/code/echo_function_names ثبت کنید. مرجع: Code Review
برای نمایش پویای دستهبندیها، تابع PHP get_queried_object_id() را در فیلد Parent استفاده کنید. از echo dynamic tag Bricks و {echo:get_queried_object_id} در فیلد Parent مثل زیر:

همچنین از تابع PHP woocommerce_get_loop_display_mode() در WooCommerce برای نمایش شرطی این بخش استفاده میکنیم.
woocommerce_get_loop_display_mode() بر اساس تنظیمات شما products، subcategories یا both (رشته) برمیگرداند.

شرط section دستهها را اینطور بگذارید:
از {echo:woocommerce_get_loop_display_mode} != products استفاده کنید.

تنظیمات حلقه تصاویر و متن در مثال: {woo_product_cat_image} برای تصویر دسته. {term_name:link} برای متن دسته با لینک.

گام ۴: بخش محصولات
تنظیمات query محصولات ساده است — فقط تعداد پست در هر صفحه را کنترل کنید.

شرط section محصولات را اینطور بگذارید:
از {echo:woocommerce_get_loop_display_mode} != subcategories استفاده کنید.

تنظیمات حلقه محصول برای مرجع (روی dynamic tag تمرکز کنید، نه استایل):


اگر محصول چند دسته دارد و فقط اولین دسته را میخواهید (تا باکس سبز خیلی بلند نشود)، {post_terms_product_cat} را با {echo:product_first_category_name} جایگزین کنید:
// Place in your child theme functions.php
// Returns the first category name of a product
function product_first_category_name() {
global $product;
if( $product && is_a( $product, 'WC_Product' ) ) {
// Get the product categories
$terms = get_the_terms( $product->get_id(), 'product_cat' );
$cats = [];
// Loop through the categories, and add them to the $cats array
foreach( $terms as $term ) {
$cats[] = $term->name;
}
// Return the first category
if( ! empty($cats) ) {
ob_start();
echo $cats[0];
return ob_get_clean();
}
}
}
بررسی نتیجه
اکنون صفحه Shop و آرشیو دستههای محصول باید درست کار کند. نمایش بخش دستهها و محصولات را از پیشخوان وردپرس در Appearance > Customize > WooCommerce > Product Catalog کنترل کنید.
