افزودن فیلد جدید شماره کارت به افزونه وردپرس AffiliateWP

مسیح دیندار
مدیریت
عضو شده: 2021-04-12 14:23:35
2021-05-27 16:16:55

افزونه وردپرس AffiliateWP که برای مدیریت بازاریابی کاربران استفاده می شود، با فیلدهای مشخصی ارائه شده که شما برای داشتن فیلدهای بیشتر، می بایست از راه مختلفی این فیلدها را اضافه کنید. یکی از این راه ها استفاده از افزودنی های مخصوص این افزونه است که خوب طبیعتا غیررایگان و بسیار گران هست که تاکنون نسخه نال شده ای از آن منتشر نشده. اما راه بعدی استفاده از کدها برای اضافه کردن فیلد جدید است.

در این روش، شما باید هر تعداد فیلد که میخواهید را داخل کد زیر وارد کرده و کد را در فایل functions.php قالبتان قرار دهید تا روی سایت اعمال شود. داخل کد توضیحات فارسی هم ارائه شده برای هر بخش.

/**
 * اضافه کردن فیلد جدید به پروفایل و افزونه بازاریابی
*/
function talkina_custom_extra_profile_fields( $user ) { ?>
 <h3>اطلاعات پرداخت</h3>
 <table class="form-table">
	 <tr>
	   <th><label for="paynum">شماره کارت یا شماره شبا</label></th>
	   <td>
	     <input type="text" name="paynum" id="paynum" value="<?php echo esc_attr( get_the_author_meta( 'paynum', $user->ID ) ); ?>" class="regular-text" /><br />
	   </td>
	 </tr>
 </table>
<?php }
add_action( 'show_user_profile', 'talkina_custom_extra_profile_fields', 10 );
add_action( 'edit_user_profile', 'talkina_custom_extra_profile_fields', 10 );

/**
 * توابع مربوط به ذخیره سازی اطلاعات فیلد در دیتابیس
*/
function talkina_custom_save_extra_profile_fields( $user_id ) {
	if ( ! current_user_can( 'edit_user', $user_id ) )
		return false;

	update_user_meta( $user_id, 'paynum', $_POST['paynum'] );

}
add_action( 'personal_options_update', 'talkina_custom_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'talkina_custom_save_extra_profile_fields' );

/**
 * افزودن فیلد جدید به فرم عضویت افزونه بازاریابی و پروفایل
*/
function talkina_custom_user_register( $user_id ) {
    $user_id = $user_id ? $user_id : get_current_user_id();

    if ( isset( $_POST['affwp_paynum'] ) ) {
        update_user_meta( $user_id, 'paynum', $_POST['affwp_paynum'] );
    }
}
add_action( 'user_register', 'talkina_custom_user_register' );
add_action( 'affwp_process_register_form', 'talkina_custom_user_register' );

/**
 * الزامی کردن فیلد جدید و نمایش متن خطا در صورت خالی بودن فیلد
 */
function talkina_custom_process_register_form() {
	$affiliate_wp = affiliate_wp();

	if ( empty( $_POST['affwp_paynum'] ) ) {
		$affiliate_wp->register->add_error( 'paynum_invalid', 'لطفا شماره کارت خود را وارد کنید' );
	}
}
add_action( 'affwp_process_register_form', 'talkina_custom_process_register_form' );