رفتن به مطلب
M.Javad

اضافه کردن فیلد سفارشی در فرم تسویه حساب easy digital download

پست های پیشنهاد شده

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

آیا برای این کار افزونه ای هست یا باید کد بزاریم؟!

اگه کد هست لطفا بزراین تا استفاده کنیم

ممنون

به اشتراک گذاری این ارسال


لینک به ارسال


<?php
// output our custom field HTML
function pippin_edd_custom_checkout_fields() {
?>
<p id="edd-phone-wrap">
<label class="edd-label" for="edd-phone"><?php _e('Contact Number', 'pippin_edd'); ?></label>
<span class="edd-description"><?php _e( 'Enter your phone number so we can get in touch with you.', 'pippin_edd' ); ?></span>
<input class="edd-input" type="text" name="edd_phone" id="edd-phone" placeholder="<?php _e('Contact Number', 'pippin_edd'); ?>" value=""/>
</p>
<p id="edd-phone-wrap">
<label class="edd-label" for="edd-company"><?php _e('Company Name', 'pippin_edd'); ?></label>
<span class="edd-description"><?php _e( 'Enter the name of your company.', 'pippin_edd' ); ?></span>
<input class="edd-input" type="text" name="edd_company" id="edd-company" placeholder="<?php _e('Company Name', 'pippin_edd'); ?>" value=""/>
</p>
<?php
}
add_action('edd_purchase_form_user_info', 'pippin_edd_custom_checkout_fields');
// check for errors with out custom fields
function pippin_edd_validate_custom_fields($valid_data, $data) {
if( empty( $data['edd_phone'] ) ) {
// check for a phone number
edd_set_error( 'invalid_phone', __('Please provide your phone number.', 'pippin_edd') );
}
if( empty( $data['edd_company'] ) ) {
// check for a phone number
edd_set_error( 'invalid_company', __('Please provide a company name.', 'pippin_edd') );
}
}
add_action('edd_checkout_error_checks', 'pippin_edd_validate_custom_fields', 10, 2);
// store the custom field data in the payment meta
function pippin_edd_store_custom_fields($payment_meta) {
$payment_meta['phone'] = isset( $_POST['edd_phone'] ) ? sanitize_text_field( $_POST['edd_phone'] ) : '';
$payment_meta['company'] = isset( $_POST['edd_company'] ) ? sanitize_text_field( $_POST['edd_company'] ) : '';
return $payment_meta;
}
add_filter('edd_payment_meta', 'pippin_edd_store_custom_fields');
// show the custom fields in the "View Order Details" popup
function pippin_edd_purchase_details($payment_meta, $user_info) {
$phone = isset( $payment_meta['phone'] ) ? $payment_meta['phone'] : 'none';
$company = isset( $payment_meta['company'] ) ? $payment_meta['company'] : 'none';
?>
<li><?php echo __('Phone:', 'pippin_edd') . ' ' . $phone; ?></li>
<li><?php echo __('Company:', 'pippin_edd') . ' ' . $company; ?></li>

<?php
}
add_action('edd_payment_personal_details_list', 'pippin_edd_purchase_details', 10, 2);

https://easydigitaldownloads.com/docs/custom-checkout-fields/

به اشتراک گذاری این ارسال


لینک به ارسال

مرسی داداش خودشه :)

فقط اگه بخوام قسمت نشانی textarea بزارم باید داخل input رو تغییر بدم فقط؟

به اشتراک گذاری این ارسال


لینک به ارسال

بله فقط تگ اینپوت رو تغییر بدید

و نام رو هم تنظیم کنید

به اشتراک گذاری این ارسال


لینک به ارسال

بله فقط تگ اینپوت رو تغییر بدید

و نام رو هم تنظیم کنید

ممنون اینم اوکی شد فقط چیزی که هست من نمیخوام این 3تا فیلد آخر اجباری باشه چون من هم محصولات دانلودی دارم هم پستی میخوام یا این سه تا فیلد اختیاری باشه که خب من required رو از توی کلاس هاشون حذف کردم ولی بازم اجباریه

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

به اشتراک گذاری این ارسال


لینک به ارسال

توابع مشخص هست بخوانید

بخش خطاها


// check for errors with out custom fields
function pippin_edd_validate_custom_fields($valid_data, $data) {
if( empty( $data['edd_phone'] ) ) {
// check for a phone number
edd_set_error( 'invalid_phone', __('Please provide your phone number.', 'pippin_edd') );
}
if( empty( $data['edd_company'] ) ) {
// check for a phone number
edd_set_error( 'invalid_company', __('Please provide a company name.', 'pippin_edd') );
}
}
add_action('edd_checkout_error_checks', 'pippin_edd_validate_custom_fields', 10, 2);

به اشتراک گذاری این ارسال


لینک به ارسال

یعنی نظر شما اینه این فیلدارو اختیاری بزارم؟!بهتر نیست یه شرطی گذاشت که فقط برای محصولات پستی نمایش داده بشه؟!

به اشتراک گذاری این ارسال


لینک به ارسال



// output our custom field HTML
if(get_post_meta($post->ID, 'posti', true)){
function tcwf_edd_custom_checkout_fields() {
?>
<p>
<label class="edd-label" for="edd-phone"><?php _e('شماره تماس', 'edd'); ?></label>
<input class="edd-input" type="text" name="edd_phone" id="edd-phone" placeholder="<?php _e('شماره موبایل خود را وارد کنید', 'edd'); ?>" value=""/>
</p>
<p>
<label class="edd-label" for="edd-company"><?php _e('استان/شهرستان', 'edd'); ?></label>
<input class="edd-input" type="text" name="edd_company" id="edd-company" placeholder="<?php _e('نام استان و شهرستان خود را وارد کنید', 'edd'); ?>" value=""/>
</p>
<p>
<label class="edd-label" for="edd-address"><?php _e('Address', 'edd'); ?></label>
<textarea class="edd-input" type="text" name="edd_address" height="300px" maxlength="2000" id="edd-address" placeholder="<?php _e('آدرس دقیق پستی محل سکونت خود را وارد کنید.(آدرس خانه-شماره پلاک و کد پستی)', 'edd'); ?>" value=""></textarea>
</p>
<?php
}
add_action('edd_purchase_form_user_info', 'tcwf_edd_custom_checkout_fields');
//check for errors with out custom fields
function tcwf_edd_validate_custom_fields($data, $post_data) {
if(!isset($post_data['edd_phone']) || $post_data['edd_phone'] == '') {
// check for a phone number
edd_set_error( 'invalid_phone', __('شماره موبايل را صحيح وارد کنيد', 'tcwf_edd') );
}
if(!isset($post_data['edd_company']) || $post_data['edd_company'] == '') {
// check for a valid company name
edd_set_error( 'invalid_company', __('شما بايد نام شهر را صحيح وارد کنيد', 'tcwf_edd') );
}
if(!isset($post_data['edd_address']) || $post_data['edd_address'] == '') {
// check for a valid address
edd_set_error( 'invalid_address', __('آدرس کامل محل سکونت را به طور دقيق وارد کنيد', 'tcwf_edd') );
}
}
add_action('edd_checkout_error_checks', 'tcwf_edd_validate_custom_fields', 10, 2 );

// store the custom field data in the payment meta
function tcwf_edd_store_custom_fields($payment_meta) {
$payment_meta['phone'] = isset($_POST['edd_phone']) ? $_POST['edd_phone'] : '';
$payment_meta['company'] = isset($_POST['edd_company']) ? $_POST['edd_company'] : '';
$payment_meta['address'] = isset($_POST['edd_address']) ? $_POST['edd_address'] : '';
return $payment_meta;
}
add_filter('edd_payment_meta', 'tcwf_edd_store_custom_fields');

// show the custom fields in the "View Order Details" popup
function tcwf_edd_purchase_details($payment_meta, $user_info) {
$phone = isset($payment_meta['phone']) ? $payment_meta['phone'] : 'none';
$company = isset($payment_meta['company']) ? $payment_meta['company'] : 'none';
$address = isset($payment_meta['address']) ? $payment_meta['address'] : 'none';
?>
<li><?php echo __('شماره تماس :', 'tcwf') . ' ' . $phone; ?></li>
<li><?php echo __('استان/شهرستان :', 'tcwf') . ' ' . $company; ?></li>
<li><?php echo __('آدرس :', 'tcwf') . ' ' . $address; ?></li>
<?php
}
add_action('edd_payment_personal_details_list', 'tcwf_edd_purchase_details', 10, 2);
}
?>

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

ویرایش شده توسط M.Javad

به اشتراک گذاری این ارسال


لینک به ارسال

نه اینم امتحان کردم نشد

دوستان کسی راه حل دیگه ای پیشنهاد نداره؟!

به اشتراک گذاری این ارسال


لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...