روزمرگی فنی
روزمرگی فنی
خواندن ۲ دقیقه·۳ سال پیش

ووکامرس: افزودن فیلد متن سفارشی به ویژگی‌های محصول

اگر از سیستم فروشگاهی ووکامرس استفاده کنید، شاید نیاز پیاده کرده باشید که غیر از فیلد ویژگی‌های محصول، یک فیلد سفارشی متنی هم برای توضیحات بیشتر اضافه کنید. اما برای این موردچکار باید کرد؟

1) قدم اول، افزودن کد زیر به فایل functions.php است تا بخش «متن سفارشی» به سایر فیلدهای ووکامرس در صفحه ویرایش محصول اضافه بشود. در اینجا با دو تا هوک سروکار داریم. اولی، یعنی woocommerce_product_options_general_product_data، وظیفه‌اش نمایش فیلد جدید است و هوک دوم، یعنی woocommerce_process_product_meta، مسئول ذخیره Value یا مقادیر آن فیلد.

add_action('woocommerce_product_options_general_product_data', 'woocommerce_product_custom_fields'); add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save'); function woocommerce_product_custom_fields() { global $woocommerce, $post; echo '<div class=&quotproduct_custom_field&quot>'; woocommerce_wp_textarea_input( array( 'id' => '_custom_product_textarea', 'placeholder' => 'متن سفارشی', 'label' => __('متن سفارشی', 'woocommerce') ) ); echo '</div>'; }

حالا اگر به قسمت ویرایش محصول برویم یا محصول جدیدی تعریف کنیم، می‌بینیم که فیلد جدیدی تحت عنوان «متن سفارشی» اضافه شده؛ به این صورت:

2) حالا به مرحله دوم می‌رسیم، یعنی ذخیره داده‌ها (مقادیر فیلد) در دیتابیس به هنگام انتشار یا بروزرسانی محصول. برای اینکار باید کد زیر هم به دنبال کد بالا به فایل توابع اضافه شود:

function woocommerce_product_custom_fields_save($post_id) { $woocommerce_custom_procut_textarea = $_POST['_custom_product_textarea']; if (!empty($woocommerce_custom_procut_textarea)) update_post_meta($post_id, '_custom_product_textarea', esc_html($woocommerce_custom_procut_textarea));

تابعی که در اینجا تعریف شده، به woocommerce_process_product_meta که بالاتر اشاره شد قلاب می‌شود و اول چک می‌کند که آیا فیلد خالی است یا نه. اگر فیلد خالی نبود، آن وقت با استفاده از update_post_meta() یک post meta ایجاد می‌کند.

3) الان که فیلد ساخته شده و مقادیرش هم ذخیره می‌شود، به مرحله آخر می‌رسیم. یعنی دریافت این مقادیر از دیتابیس و سپس نمایش آن در صفحه محصول (سمت کاربر). برای انجام این کار، بهترین روش اینست که یک اصلاح جزئی در یکی از فایل‌های‌ ووکامرس بدهیم.

به این صورت که در کنترل پنل از مسیر wp-content/plugins/woocommerce/templates وارد فایل‌های قالب ووکامرس می‌شویم و فایل single-product.php را باز می‌کنیم. حالا ابتدا باید عبارت زیر را در کد پیدا کنیم:

<?php wc_get_template_part( 'content', 'single-product' ); ?>

و سپس کد زیر را بعد از آن اضافه کنید:

<?php echo get_post_meta(get_the_ID(), '_custom_product_textarea', true); ?>

به این شکل:

الان اگر به صفحه محصول در سمت کاربر برویم، می‌بینیم که فیلد متن سفارشی نمایش داده می‌شود.

وندا نوژن

ووکامرسwoocommerceوردپرسphp
روزها درگیر مصائب فنی، شب‌ها مشغول ثبت راه‌حل‌های یافتنی
شاید از این پست‌ها خوشتان بیاید