افزودن فیلد های سفارشی در Edd

خانه / وبلاگ / آموزش وردپرس / افزودن فیلد های سفارشی در Edd
5 / 5
2
edd-custom-field

افزودن فیلد های سفارشی در Edd

5 / 5
2

یکی از مشکلاتی که معمولا کاربران افزونه های فروشگاهی با آن مواجه میشوند، نبود امکان سفارشی سازی نمودن فرم ها و فیلد ها در فروشگاه است. برخی از کاربران ممکن است که بخواهند در فروشگاه خود بتوانند فیلد های مورد نظر خود را اضافه نمایند تا بتوانند اطلاعات بیشتری را از کاربران و مشتریان خود دریافت کنند. فیلد های دلخواه مثل شماره تماس , آدرس , شهر , استان  و … که برخی برای فروش فایل پستی در Edd کاربرد دارند.

کاربرد های افزودن فیلد سفارشی دلخواه به افزونه فروشگاه فایل Easy Digital Download

افزونه فروشگاه فایل Edd با هدف ایجاد فروشگاه های اینترنتی فروش فایل های دانلودی می باشد. به صورت پیش فرض در مرحله پرداخت edd سه فیلد برای خریدار نمایش داده می شود. ( نام , نام خانوادگی و ایمیل ). حال اگر شما قصد داشته باشید برخی محصولات دانلودی فروشگاه خود را که حجم آنها زیاد و قرار دادن فایل سنگین برای شما و خریدار به صرفه نیست به صورت پستی بفروشید. در این صورت مشتریان فروشگاه شما می توانند محصول مورد نظر را سفارش داده و به صورت پستی فایل خریداری شده را برای مشتری ارسال کنید.

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

در این مطلب با استفاده از افزونه ایرانی که قرار است معرفی کنم میتوانید به سادگی فیلد های مورد نظر خود را بیافزایید.

افزودن فیلد در Edd با افزونه EDD custom checkout fields

EDD-custom-checkout-fields

با استفاده از افزونه EDD custom checkout fields میتوانید به سادگی فیلد های سفارشی خود را به Edd اضافه نمایید، این افزونه یک افزونه ایرانی است و در مخزن وردپرس نیز به ثبت رسیده است. اکنون میتوانید این افزونه را نصب کنید تا از قابلیت های آن بهره ببرید.

شروع استفاده از افزونه

ابتدا باید افزونه EDD custom checkout fields را نصب و فعالسازی نمایید، اکنون مشاهده خواهید نمود که در پیشخوان وردپرس یک گزینه با عنوان فیلد های پرداخت در بخش Downloads اضافه شده است. با کلیک بر روی آن میتوانید وارد تنظیمات افزونه شوید تا فیلد مورد نظر خود را اضافه نمایید.

مطلب پیشنهادی  افزودن ftp به وردپرس

edd-custom-fields

اکنون با کلیک بر روی دکمه +افزودن فیلد بخش افزودن فیلد برای شما باز خواهد شد و در آن میتوانید نوع فیلد و تنظیمات مربوط به آن را پیکربندی نمایید. سپس باید نوع فیلد خود را مشخص نمایید و سپس باید مشخص نمایید که ورودی کاربر باید یک خطی باشد و یا چند خطی باید باشد.

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

اگر فیلد شما یک لیست بازشو است تا کاربران بتوانند از گزینه های موجود در فیلد یک آیتم  را انتخاب کنند، میتوانید با کلیک بر روی دکمه + آیتم های موجود در فیلد را وارد نمایید تا به مشتری ها نمایش داده شوند.

EDD-custom-checkout-fields-list

از لیست های بازشو میتوانید در بخش هایی مانند انتخاب شهر، سن و… استفاده نمایید تا کاربر بجای وارد نمودن مقادیر بتواند یکی از آیتم ها را انتخاب کند.

اکنون میتوانید فیلد های خود را ذخیره نمایید تا کاربران بتوانند در سایت از آنها استفاده کنند.

امیدوارم با استفاده از این افزونه توانسته باشید فیلد های مورد نظر خود را در فروشگاه اضافه نمایید. ممکن است از مطلب”افزایش کیفیت محتوا را با این ترفند‌ها به شکل چشمگیری احساس کنید” نیز خوشتان بیاید.

افزودن فیلد دلخواه به edd بدون افزونه

در این روش هیچ افزونه ای نیاز نداریم روی وردپرس نصب کنیم. برای شروع کار باید وارد پوشه قالب خود شده و فایل functions.php را در حالت ویرایش باز کنید. داخل این فایل کدهای زیادی ممکنه وجود داشته باشه. شروع کدهای داخل این فایل با هست. شما می توانید کدی که در ادامه برای افزودن فیلد به edd معرفی می کنیم را بعد <?php وارد کنید یعنی یک خط پایین ترش

/**
 * افزودن فیدل شماره تماس به  EDD
 * در این بخش یک نمونه فیدل شماره تماس مثال زده شده. شما می توانید بی نهایت فیلد اضافه کنید.
 */
function dw_edd_display_checkout_fields() {
    // شماره تلفن کاربر درصورتی که اولین بار هست که وارد میشه
    if ( is_user_logged_in() ) {
        $user_id = get_current_user_id();
        $phone = get_the_author_meta( '_edd_user_phone', $user_id );    
    }
    $phone = isset( $phone ) ? esc_attr( $phone ) : '';
?>
 
 
    <label class="edd-label" for="edd-phone"><?php echo 'شماره تماس'; ?></label>
    <span class="edd-description"><?php echo 'ما برای ارتباط با شما به شماره تماس شما نیاز داریم.'; ?></span>
    <input class="edd-input" id="edd-phone" name="edd_phone" placeholder="<?php echo 'شماره مشتری'; ?>" type="text" value="<?php echo $phone; ?>" />
    <?php } add_action( 'edd_purchase_form_user_info', 'dw_edd_display_checkout_fields' ); /** * الزامی کردن فیلد شماره تماس * فیلد دیگری را اگر میخواهید اینجا وارد نمایید. */ function dw_edd_required_checkout_fields( $required_fields ) { $required_fields = array( 'edd_phone' => array(
            'error_id' => 'invalid_phone',
            'error_message' => 'یک شماره تماس معتبر وارد کنید.'
        ),
    );
return $required_fields;
}
add_filter( 'edd_purchase_form_required_fields', 'dw_edd_required_checkout_fields' );
/**
 * نمایش دادن پیغام خطا وقتی که کاربر فیلد شماره تلفن را خالی بگذارد.
 * میتونید  خطا های بیشتر یا پیغان های اضافی اینجا وارد کنید.اگر نیاز دارید.
 */
function dw_edd_validate_checkout_fields( $valid_data, $data ) {
    if ( empty( $data['edd_phone'] ) ) {
        edd_set_error( 'invalid_phone', 'شماره تلفن خود را وارد کنید.' );
    }
}
add_action( 'edd_checkout_error_checks', 'dw_edd_validate_checkout_fields', 10, 2 );
/**
 * ذخیره و افزودن فیلد سفارشی شماره تلفن به  متا پرداخت EDD
 */
function dw_edd_store_custom_fields( $payment_meta ) {
    $payment_meta['phone'] = isset( $_POST['edd_phone'] ) ? sanitize_text_field( $_POST['edd_phone'] ) : '';
   return $payment_meta;
}
add_filter( 'edd_payment_meta', 'dw_edd_store_custom_fields');
/**
 *  افزودن شماره تلفن به صفحه "مشاهده جزییات خرید"
 */
function dw_edd_view_order_details( $payment_meta, $user_info ) {
    $phone = isset( $payment_meta['phone'] ) ? $payment_meta['phone'] : 'none';
?>
 

<div class="column-container">

<div class="column">
        <strong><?php echo 'تلفن: '; ?></strong>
        <input class="medium-text" name="edd_phone" type="text" value="<?php esc_attr_e( $phone ); ?>" />
 
 
            <?php _e( 'شماره تلفن مشتری', 'edd' ); ?>
    </div>

 
</div>

 
<?php
}
add_action( 'edd_payment_personal_details_list', 'dw_edd_view_order_details', 10, 2 );
  
/**
 *  ذخیره شماره تلفن وقتی که توسط مشاهده جزییات خرید تغییر داده شده است.
 */
function dw_edd_updated_edited_purchase( $payment_id ) {
  
    // رفتن به متا خرید
    $payment_meta = edd_get_payment_meta( $payment_id );
  
    // به روز رسانی شماره تلفن
    $payment_meta['phone'] = isset( $_POST['edd_phone'] ) ? $_POST['edd_phone'] : false;
  
    // بروز رسانی متای خرید توسط آرایه جدید
    update_post_meta( $payment_id, '_edd_payment_meta', $payment_meta );
}
add_action( 'edd_updated_edited_purchase', 'dw_edd_updated_edited_purchase' );
  
/**
 * افزودن تگ{phone} به صفحه ارسال ایمیل افزونه edd
*/
if ( function_exists( 'edd_add_email_tag' ) ) {
    edd_add_email_tag( 'phone', 'شماره تماس مشتری', 'dw_edd_email_tag_phone' );
}
/**
 *تگ {phone ایمیل}
 */
function dw_edd_email_tag_phone( $payment_id ) {
    $payment_data = edd_get_payment_meta( $payment_id );
    return $payment_data['phone'];
}
/**
 * به روزرسانی شماره تماس در جدول wp_usermeta
 * این بخش حساب کاربری می باشد که توسط مدیر سایت قابل تغییر است.
 */
function dw_edd_store_usermeta( $payment_id ) {
    // بازگشت , زمانی که کاربر وارد شد
    if ( ! is_user_logged_in() )
        return;
    //آیدی کاربر 
    $user_id = get_current_user_id();
    // بروز رسانی کاربر
    update_user_meta( $user_id, '_edd_user_phone', $_POST['edd_phone'] );
}
add_action( 'edd_complete_purchase', 'dw_edd_store_usermeta' );
/**
 * ذخیره شماره تماس زمانی که value توسط کاربر تغییر داده شد.
*/
function dw_edd_save_extra_profile_fields( $user_id ) {
    if ( ! current_user_can( 'edit_user', $user_id ) )
        return false;
    update_user_meta( $user_id, '_edd_user_phone', $_POST['phone'] );
}
add_action( 'personal_options_update', 'dw_edd_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'dw_edd_save_extra_profile_fields' );
/**
 * ذخیره شماره تماس زمانی که کاربر شما راه را در بخش حساب کاربری خود ویرایش کرد.
*/
function dw_edd_pre_update_user_profile( $user_id, $userdata ) {
     
    $phone = isset( $_POST['edd_phone'] ) ? $_POST['edd_phone'] : '';
    // اطمینان از وارد کردن شماره توسط کاربر
    if ( ! $phone ) {
        edd_set_error( 'phone_required', __( 'لطفا شماره تماس خود را وارد کنید', 'edd' ) );
    }
    // بروزرسانی شماره تماس
    update_user_meta( $user_id, '_edd_user_phone', $phone );
}
add_action( 'edd_pre_update_user_profile', 'dw_edd_pre_update_user_profile', 10, 2 );
/**
 * افزودن شماره تماس به "جزییات کاربر" در بخش حساب کاربری
 */
function dw_user_contactmethods( $methods, $user ) {
    $methods['_edd_user_phone'] = 'Phone';
    return $methods;
}
add_filter( 'user_contactmethods', 'dw_user_contactmethods', 10, 2 );

با افزودن کد بالا به فایل فانکشن قالب وردپرس سایت خود به بخش پرداخت افزونه فروشگاه فایل Edd یک فیلد شماره تماس اضافه خواهد شد. حال اگر به فیلد های بیشتری نیاز دارید با نگاه به کدها متوجه میشید که باید چه قسمت هایی رو تغییر داده و اسن فیلد دیگری رو جایگزینش کنید و به ادامه کد قبلی وارد کنید.

مطلب پیشنهادی  فایل php.ini در وردپرس و کاربرد آن

به همین سادگی نیز می تواندی بدون استفاده از افزونه فیلد جدید به مرحله پرداخت edd اضافه کنید.

اشتراک گذاری

  • دیدگاهتان فقط و فقط در رابطه با همین مطلب باشد.
  • لطفا از تایپ فینگلیش بپرهیزید. در غیر اینصورت دیدگاه شما بررسی نخواهد شد.
  • هدفتان از ارسال دیدگاه تبلیغ یا بک لینک نباشد. در غیر اینصورت دیدگاه حذف می شود.
  • به دیگر توهین و اهانت نکنید.

11 دیدگاه

  1. naser

    سلام
    کد های جهت اضاف کردن شماره تماس رو من به فایل فکشن اضاف کردم و به درستی کار می کنه.
    میخواستم بدون شماره ای که کاربر وارد کرده کجا ثبت میشه؟
    با تشکر از شما.

    • علی غلامی

      سلام عزیز
      اطلاعات داخل دیتابیس ذخیره میشه ، اگر داخل پیشخوان قسمت پروفایل کاربر شماره نمایش داده نمیشه ، بهتره از افزونه EDD Checkout Fields Manager استفاده کنید.
      موفق باشید

      • ناصر

        سلام
        دوستان من مشکل افزودن شماره تماس در سبد خرید رو با افزودن کد به فایل فکشن قالب حل کردم. و قابل توجه اینکه این شماره ثبت شده از پیشخوان وردپرس و در خلاصه فروش ایزی دیجتال دانلود قابل مشاهده است.
        با اجازه مدیر ایمیل رو قرار میدم کسی خواست این کدها رو در اختیارش قرار بدم.
        با تشکر از مدیر digiwp
        sh********@gmail.com

      • علی غلامی

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

  2. saeed

    سلام من میخوام فیلدی که ساختم وقتی تیک خورد یه مبلغی به فاکتور اضافه کنه میشه راهنمایی کنید که باید چیکار کنم؟ و یا اگر خودتون انجام میدید هزینه ش رو بفرمائید

    • علی غلامی

      سلام سعید عزیز
      میتونید با واحد طراحی در ارتباط باشید. (منو خدمات » طراحی پلاگین)
      همچنین جهت ارتباط سریع میتونید به آیدی تلگرام @digiwp_developer پیام بدید.
      موفق باشبد

  3. محبی

    برای edd اجرا میشه؟

  4. محمد

    سلام . من این افزونه رو نصب کردم و فیلد هم اضافه کردم . ولی هرکاری میکنم تو سبد خریدم هیچ فیلد اضافه ای نشون نمیده ! و این فیلدهایی که با این افزونه میزنم رو نشون نمیده

    • هادی قربانی

      سلام محمد عزیز
      یعنی نصب افزونه و افزودن فیلد باید بدون مشکل فیلد ها داخل سایتتون نمایش داده بشه. اگر نشون نمیده ممکنه دلیلش اختلال خاصی باشه که نیاز به بررسی داره
      کی تونید از روش دوم استفاده کرده و با استفاده کد فیلد های دلخواه رو به سبد خرید edd اضافه کنید.
      لازم به ذکر هست که هر دو روش اموزش داده شده کامل تست شده می باشد.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *