افزونه ووکامرس از بهترین فروشگاه سازهای وردپرس است و از توسعه و انعطاف بالایی برخوردار است.
در این مقاله مجموعهای از ترفندهای کاربردی را برای توسعه ووکامرس آماده گام به گام کردهایم.
به دلیل طولانی بودن تعداد ترفندها، این مقاله چند بخش تقسیم شده که میتوانید آنها را دنبال کنید.
خب بدون وقفه بریم سراغ ترفندهای افزونه دوستداشتنی ووکامرس، با تیم تولید محتوای تم فور همراه باشید.
فیلدهای دلخواه از پراستفادهترین سفارش سازیها در طراحی وب سایت خصوصاً وردپرس به شمار میرود.
با افزودن یک فیلد دلخواه، میتوانید از آن برای کاربردهای مختلفی در ووکامرس خود استفاده کنید.



قطعه کد زیر را در انتها یا ابتدای فایل functions.php قالب یا چایلد تم قالب خود قرار بدید و آن را ذخیره کنید.
مهم و ضروری! قبل از افزودن کدها به فایل فانکشن قالب، یک کپی از این فایل بعنوان بک آپ بگیرید.
/**
* @snippet Add Custom Field @ WooCommerce Quick Edit Product
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_action( 'woocommerce_product_quick_edit_start', 'themefour_show_custom_field_quick_edit' );
function themefour_show_custom_field_quick_edit() {
global $post;
?>
فیلد دلخواه: ' . esc_html( get_post_meta( $post_id, '_custom_field', true ) ) . '
با استفاده از قطعه کد زیر میتوانید تب نظرات را همیشه و به صورت اجباری در محصولات نمایش دهید.
حتی اگر در صفحۀ ویرایش محصول، گزینه فعال سازی نقد و بررسی تیک نخورده باشد، باز نظرات را خواهید داشت.

در این حالت ممکن است به هر دلیلی فعال سازی نقد و بررسی را فراموش کرده باشید.
اینجاست که این قطعه کد به شما کمک میکند که به صورت سراسری همیشه نظرات محصولات باشند.

/**
* @snippet Override & Force Enable Reviews @ WooCommerce Products
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_filter( 'comments_open', 'themefour_force_enable_reviews', 9999, 2 );
function themefour_force_enable_reviews( $enable, $post_id ) {
if ( 'product' === get_post_type( $post_id ) ) {
$enable = true;
}
return $enable;
}
محصولاتی دارید که تنها باید یکبار فروش بروند؟ محصولات دانلودی دارید؟ این قطعه کد برای شماست.
اگر نمیخواهید روی تک تک محصولات گزینه فروش تکی را فعال کنید و تعداد محصولاتی زیادی دارید.


/**
* @snippet Override & Force Sold Individually @ WooCommerce Products
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_filter( 'woocommerce_is_sold_individually', '__return_true' );
با این قطعه کد، هر محصول توسط مشتری تنها میتواند یکبار به سبد خرید اضافه شود.
با این قطعه کد کاربردی میتوانید قیمت کالاهایی که دیگر در انبار شما موجود نیستند را مخفی کنید.

/**
* @snippet Hide Price If Out of Stock @ WooCommerce Frontend
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_filter( 'woocommerce_get_price_html', 'themefour_hide_price_if_out_stock_frontend', 9999, 2 );
function themefour_hide_price_if_out_stock_frontend( $price, $product ) {
if ( is_admin() ) return $price; // BAIL IF BACKEND
if ( ! $product->is_in_stock() ) {
$price = apply_filters( 'woocommerce_empty_price_html', '', $product );
}
return $price;
}
ووکامرس به صورت پیشفرض حتی اگر محصول ناموجود باشد قیمت آن را نمایش میدهد.
به این فکر کردید که میتوانیم تعداد موجودی کالاها را در ایمیل سفارش مشتری قید کنیم؟.
قطعه کد زیر، هر محصولی که موجودی آن را رو به کاهش باشد، موجودی آن را فاکتور نمایش داده میشود.

/**
* @snippet Remaining Stock @ WooCommerce New Order Email
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
// ----------
// STEP 1: DECLARE EMAIL ID GLOBAL
add_action( 'woocommerce_email_before_order_table', 'themefour_email_id_as_global', 9999, 4 );
function themefour_email_id_as_global( $order, $sent_to_admin, $plain_text, $email ){
$GLOBALS['email_id'] = $email->id;
}
// ----------
// STEP 2: IF NEW ORDER EMAIL, ADD REMAINING STOCK QUANTITY
add_filter( 'woocommerce_email_order_item_quantity', 'themefour_item_remaining_stock', 9999, 2 );
function themefour_item_remaining_stock( $qty_display, $item ) {
$email_id = $GLOBALS['email_id'];
if ( empty( $email_id ) ) return;
if ( 'new_order' !== $email_id ) return;
$product = $item->get_product();
if ( is_object( $product ) && $product->managing_stock() ) {
$qty_display .= ' (' . $product->get_stock_quantity() . ' عدد باقی مانده)';
}
return $qty_display;
}
نمونه تستی که از این قطعه قرار دادیم گویای کار این کد کاربردی برای فروشگاه ساز ووکامرس است.
اگر میخواهید به ابتدا و انتهای عدد موجودی کالا در صفحه محصول یک متن دلخواه اضافه کنید.
این قطعه کد برای همین منظور است و میتوانید متن دلخواه خود را مانند تصویر زیر قرار بدهید.

/**
* @snippet Stock Quantity Suffix @ WooCommerce Single Product
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_filter( 'woocommerce_format_stock_quantity', 'themefour_stock_quantity_suffix', 9999, 2 );
function themefour_stock_quantity_suffix( $stock_quantity, $product ) {
$stock_quantity .= ' عددموجودی';
return $stock_quantity;
}
متن به فارسی در کد نوشته شده و کاملاً روند اجرای این قطعه کد قابل تشخیص است.
این ترفند مورد بسیار کاربردی و مورد علاقه، میتوانید مدیریت بهتری برای محصولات شما فراهم میکند.
با این کد، همۀ محصولات در محیط پیشخوان وردپرس، براساس موجودی آنها مرتب میشوند.
مثلاً محصولاتی که ناموجود هستند به انتهای صفحه میروند و محصولات موجود بالاتر قرار میگیرند.

در افزونه ووکامرس این حالت براساس تاریخ انتشار محصولات است و ممکن است این را دوست نداشته باشید.
کافیست قطعه کد زیر را در فایل فانکشن قالب (functions.php) یا چایلد تم خود قرار دهید و ذخیره کنید.
بعد از این کار به منوی محصولات ووکامرس در پیشخوان ووکامرس خود برگردید تا تغییرات را ببینید.
خواهید دید که کالاها یا محصولات ناموجود به انتهای صفحه یا لیست محصولات شما رفتهاند.
/**
* @snippet Product Sorted By Stock @ WordPress Dashboard
* @post WooCommerce Customization & Development Tricks - Part 1
* @developer themefour
* @testedwith WooCommerce 6.1
* @website https://themefour.com/
*/
add_action( 'pre_get_posts', 'themefour_sort_products_by_stock_status_admin' );
function themefour_sort_products_by_stock_status_admin( $query ){
global $typenow;
if ( is_admin() && $query->is_main_query() && $typenow == 'product' ) {
if ( ! isset( $_GET['orderby'] ) ) {
$query->set( 'orderby', 'meta_value' );
$query->set( 'meta_key', '_stock_status' );
$query->set( 'order', 'ASC' );
}
}
}
پایان بخش اول آموزش ترفندها و توسعه ووکامرس
بخش اول، ترفندهای شخصی سازی و توسعه ووکامرس به پایان رسید. امیدواریم لذت برده باشید.
پاینده و شاد باشید.