نمایش اطلاعات بیشتر از محصولات در ووکامرس با woocommerce custom product data fields

نمایش اطلاعات محصولات در ووکامرس

درود بر شما عزیزان؛
در افزونه فروشگاه ساز ووکامرس همانطور که مطلع هستید امکانات بسیار زیادی نهفته است. اما یافتن این امکانات نیاز به بررسی و تحلیل هایی دارد که در این راه همیشه ما همراه شما هستیم. در ادامه این راه پر پیچ و خم با شما هستیم با افزونه ای بسیار بسیار حرفه ای.افزونه ای برای نمایش اطلاعات محصولات در ووکامرس به نام woocommerce custom product data fields، که در ادامه با آن بیشتر آشنا می شویم.

نمایش اطلاعات محصولات در ووکامرس با woocommerce custom product data fields

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

شروع کار

برای شروع ابتدا افزونه را در وب سایت خود نصب و راه اندازی نمائید. وقتی افزونه در سایت شما به صورت کامل فعال شد باید در فایل function.php قالب سایت خود توابعی را بنویسید. تا این فیلد ها در صفحه ویرایش محصول شما نمایان شوند. پس برای این منظور باید کد زیر را در فایل function.php قالب وردپرس خود قرار دهید. کد زیر را در ابتدای فایل فانکشن قالب وردپرس خود پس از کد <?php قرار دهید.


/**
* WooCommerce product data tab definition
*
* @return array
*/

add_action('wc_cpdf_init', 'prefix_custom_product_data_tab_init', 10, 0);
if(!function_exists('prefix_custom_product_data_tab_init')) :

function prefix_custom_product_data_tab_init(){
$custom_product_data_fields = array();
/** First product data tab starts **/
/** ===================================== */

$custom_product_data_fields['custom_data_1'] = array(

array(
'tab_name'    =&gt; __('Custom Data', 'wc_cpdf'),
),

array(
'id'          =&gt; '_mytext',
'type'        =&gt; 'text',
'label'       =&gt; __('Text', 'wc_cpdf'),
'placeholder' =&gt; __('A placeholder text goes here.', 'wc_cpdf'),
'class'       =&gt; 'large',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'          =&gt; '_mynumber',
'type'        =&gt; 'number',
'label'       =&gt; __('Number', 'wc_cpdf'),
'placeholder' =&gt; __('Number.', 'wc_cpdf'),
'class'       =&gt; 'short',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'          =&gt; '_mytextarea',
'type'        =&gt; 'textarea',
'label'       =&gt; __('Textarea', 'wc_cpdf'),
'placeholder' =&gt; __('A placeholder text goes here.', 'wc_cpdf'),
'style'       =&gt; 'width:70%;height:140px;',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'          =&gt; '_mycheckbox',
'type'        =&gt; 'checkbox',
'label'       =&gt; __('Checkbox', 'wc_cpdf'),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'          =&gt; '_myselect',
'type'        =&gt; 'select',
'label'       =&gt; __('Select', 'wc_cpdf'),
'options'     =&gt; array(
'option_1'  =&gt; 'Option 1',
'option_2'  =&gt; 'Option 2',
'option_3'  =&gt; 'Option 3'
),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'          =&gt; '_myradio',
'type'        =&gt; 'radio',
'label'       =&gt; __('Radio', 'wc_cpdf'),
'options'     =&gt; array(
'radio_1' =&gt; 'Radio 1',
'radio_2' =&gt; 'Radio 2',
'radio_3' =&gt; 'Radio 3'
),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'         =&gt; '_myhidden',
'type'       =&gt; 'hidden',
'value'      =&gt; 'Hidden Value',
),

array(
'id'         =&gt; '_mymultiselect',
'type'       =&gt; 'multiselect',
'label'      =&gt; __('Multiselect', 'wc_cpdf'),
'placeholder' =&gt; __('Multiselect maan!', 'wc_cpdf'),
'options'     =&gt; array(
'option_1' =&gt; 'Option 1',
'option_2' =&gt; 'Option 2',
'option_3' =&gt; 'Option 3',
'option_4' =&gt; 'Option 4',
'option_5' =&gt; 'Option 5'
),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
'class'       =&gt; 'medium'
),

// image
array(
'id'         =&gt; '_myimage',
'type'       =&gt; 'image',
'label'      =&gt; __('Image 1', 'wc_cpdf'),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'id'         =&gt; '_mygallery',
'type'       =&gt; 'gallery',
'label'      =&gt; __('Gallery', 'wc_cpdf'),
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

// Color
array(
'id'          =&gt; '_mycolor',
'type'        =&gt; 'color',
'label'       =&gt; __('Select color', 'wc_cpdf'),
'placeholder' =&gt; __('A placeholder text goes here.', 'wc_cpdf'),
'class'       =&gt; 'large',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

// Datepicker

array(
'id'          =&gt; '_mydatepicker',
'type'        =&gt; 'datepicker',
'label'       =&gt; __('Select date', 'wc_cpdf'),
'placeholder' =&gt; __('A placeholder text goes here.', 'wc_cpdf'),
'class'       =&gt; 'large',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
),

array(
'type'        =&gt; 'divider'
)

);

/** First product data tab ends **/
/** ===================================== */
/** Second product data tab starts **/
/** ===================================== */

$custom_product_data_fields['custom_data_2'] = array(

array(
'tab_name'    =&gt; __('Custom Data 2', 'wc_cpdf'),
),

array(
'id'          =&gt; '_mytext_2',
'type'        =&gt; 'text',
'label'       =&gt; __('Text ABCD', 'wc_cpdf'),
'placeholder' =&gt; __('A placeholder text goes here.', 'wc_cpdf'),
'class'       =&gt; 'large',
'description' =&gt; __('Field description.', 'wc_cpdf'),
'desc_tip'    =&gt; true,
)

);

return $custom_product_data_fields;

}

endif;

خب تا اینجای کار اگر کد فوق را درون فایل فانکشن خود قرار داده باشید بخش ویرایش محصول به صورت زیر خواهد شد:

  بهترین افزونه‌ های وردپرس برای ساخت فروشگاه اینترنتی

edit product - نمایش اطلاعات محصولات در ووکامرس

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

1. کد بازگردانی فیلد های تک مقداری


/**
*
* Don't forget to include $wc_cpdf global variable
* $wc_cpdf-&gt;get_value($post_id, $field_id);
* $post_id = (integer) post ID
* $field_id = (string) unique field ID
*
*/

global $wc_cpdf;
echo $wc_cpdf-&gt;get_value(get_the_ID(), '_mytext');

2. کد بازگردانی فیلد های چند مقداری

global $wc_cpdf;
$multiselect = $wc_cpdf-&gt;get_value($post-&gt;ID, '_mymultiselect');
foreach ($multiselect as $value) {
echo $value;
}

3. کد بازگردانی تصاویر

global $wc_cpdf;
$image_id = $wc_cpdf-&gt;get_value($post-&gt;ID, '_myimage');
$size = 'thumbnail';
$image_attachment = wp_get_attachment_image($image_id, $size);
echo $image_attachment;

4. کد بازگردانی تصاویر در حالت گالری


global $wc_cpdf;
$gallery = $wc_cpdf-&gt;get_value($post-&gt;ID, '_mygallery');
foreach ($gallery as $image_id) {

$size = 'thumbnail';
$image_attachment = wp_get_attachment_image($image_id, $size);

echo $image_attachment;

}

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

مثال …

برای قرار دادن یک جدول در توضیحات محصول برای بیان اندازه های محصول مورد نظر! که برای این منظور باید کد زیر را در فایل function.php در ادامه <?php قرار دهید:


/**
* Define custom product data fields
*/

add_action('wc_cpdf_init', 'prefix_custom_product_data', 10, 0);
if(!function_exists('prefix_custom_product_data')) :

function prefix_custom_product_data(){

$custom_product_data_fields = array();

$custom_product_data_fields['ceramic_details'] = array(

array(
'tab_name'   =&gt; __('Ceramic Details', 'textdomain'),
),
array(
'id'         =&gt; 'c_height',
'type'          =&gt; 'text',
'label'      =&gt; __('Height', 'textdomain')
),
array(
'id'          =&gt; 'c_width',
'type'          =&gt; 'text',
'label'      =&gt; __('Width', 'textdomain')
),
array(
'id'          =&gt; 'c_depth',
'type'          =&gt; 'text',
'label'      =&gt; __('Depth', 'textdomain')
),
array(
'id'          =&gt; 'c_material',
'type'          =&gt; 'select',
'label'      =&gt; __('Material', 'textdomain'),
'options'    =&gt; array(
'--'                =&gt; '--',
'Earthenware'       =&gt; 'Earthenware',
'White earthenware' =&gt; 'White earthenware',
'Red earthenware'   =&gt; 'Red earthenware',
'Stoneware'         =&gt; 'Stoneware',
'Porcelain'         =&gt; 'Porcelain'
),
),
array(
'id'           =&gt; 'c_ref',
'type'           =&gt; 'text',
'label'       =&gt; __('Ref', 'textdomain')
),
array(
'id'           =&gt; 'c_artist',
'type'           =&gt; 'select',
'label'       =&gt; __('Artist', 'textdomain'),
'options'     =&gt; array(
'--'        =&gt; '--',
'John Doe'  =&gt; 'John Doe',
'Jane Doe'  =&gt; 'Jane Doe'
),
),

);

return $custom_product_data_fields;

}

endif;

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


/*
* Display product data values underneath the &quot;Add to Cart&quot; button
*/

add_action('woocommerce_single_product_summary', 'prefix_display_ceramic_details', 31);
function prefix_display_ceramic_details(){

global $wc_cpdf;

$height    = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_height');
$width     = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_width');
$depth     = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_depth');
$material  = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_material');
$ref       = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_ref');
$artist    = $wc_cpdf-&gt;get_value(get_the_ID(), 'c_artist');

$output = '
&lt;table border=&quot;0&quot;&gt;';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Height: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$height.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Width: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$width.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Depth: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$depth.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Material: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$material.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Ref: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$ref.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '
&lt;tr&gt;
&lt;td&gt;'.__('Artist: ', 'textdomain').'&lt;/td&gt;
&lt;td&gt;'.$artist.'&lt;/td&gt;
&lt;/tr&gt;

';
$output .= '&lt;/table&gt;

';

echo $output;

}

نتایج نمایش اطلاعات محصولات در ووکامرس به صورت زیر خواهد شد:

show information- نمایش اطلاعات محصولات در ووکامرس

روزگارتون زیبا…

دانلود افزونه woocommerce custom product data fields

دانلود صفحه افزونه
آیا این مقاله برای شما مفید بود؟
تقریبا
خیر

دیدگاهتان را بنویسید

ارسال دیدگاه به معنی این است که شما ابتدا قوانین ارسال دیدگاه را مطالعه کرده‌اید و با آن موافق هستید.

دیدگاه‌های این نوشته جدید ترین ها شاخص

  1. 4 سال عضو همیار وردپرس

    با سلام ، آیا این افزونه باعث خرابی سایت در لوکال هاست نمی شود

    • 6 سال عضو همیار وردپرس

      سلام مجدد
      ربطی به هاست یا لوکال هاست نداره و ممکنه ناسازگار باشه با سایت شما. به خاطر این موضوع حتما بک آپ تهیه کنید.

  2. 4 سال عضو همیار وردپرس

    با سلام ، میتوانم بگم که آیا این کد باعث خرابی سیستم نمی شود

  3. 6 سال عضو همیار وردپرس

    ببخشید من کد رو وارد می کنم این ارور رو میده
    قادر به برقراری ارتباط با سایت برای بررسی خطاهای مهلک نمی‌باشیم، بنابراین تغییر PHP برگشت داده شد. شما بایستی تغییر فایل PHP خود را با استفاده از ابزارهای دیگر مانند استفاده از SFTP آپلود نمایید.

  4. 6 سال عضو همیار وردپرس

    با سلام و خسته نباشید. لینک دانلود خراب می باشد خواهشمندم پیگیری فرمایید. با تشکر

  5. سلام و درود

    چطور میشه فیلدی مانند فیلد “دانشجو” به محصولات اضافه کرد

    منظورم اینه: http://s8.picofile.com/file/8321796892/2018_03_15_18_37_26.jpg

    با تشکر

    • منتظر پاسخ هستم

    • کسی نیست پاسخ بده ؟

  6. 8 سال عضو همیار وردپرس

    با سلام خدمت دوست عزیز لینک دانلود خراب می باشد لطفا بررسی بفرمایید