رفتن به مطلب

اضافه کردن فیلد سفارشی در فرم تسویه حساب 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/

لینک به ارسال

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

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

ممنون اینم اوکی شد فقط چیزی که هست من نمیخوام این 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 قرار دهید.

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