M.Javad

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

9 پست در این موضوع قرار دارد

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

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

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

ممنون

0

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


لینک به پست


<?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/

1

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


لینک به پست

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

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

0

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


لینک به پست

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

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

1

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


لینک به پست

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

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

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

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

0

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


لینک به پست

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

بخش خطاها


// 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);

1

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


لینک به پست

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

0

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


لینک به پست

ارسال شده در (ویرایش شده)



// 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
0

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


لینک به پست

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

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

0

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


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری