neda299 2 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 سلام دوستان میخوام کد بخش ثبت نام سایت و لاگین رو طوری تغییر بدم که به جای ایمیل با شماره موبایل کار کنه یعنی هم ثبت نام کنه هم برای ورود شماره موبایل رو بگیره لاگین کنه کدشو اگر کسی دارین ممنون میشم بدین یا اینکه راهنمایی کنین چطوری تغییرش بدم در حد متوسط یا خوب خود وردپرس و کدنویسیشو بلدم 1 نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 از اونجایی که در کدنویسی وردپرس خوب هستین کاری که باید انجام بدین این هست در بخش ثبت نام باید یک فیلد به اسم موبایل اضافه کنید و شماره موبایل رو در یوزر متا ذخیره کنید برای لاگین هم باید از طریق شماره موبایل user_login رو بدست بیارین بعد از طریق تابع wp_signon لاگین کردن(یوزر و پسورد) رو چک و انجام بدین 1 3 نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 یک دنیا ممنون از کمکتون من یک یوزر متا به فرم ثبت نام اضافه کردم که شماره موبایل رو تو دیتابیس ذخیره میکنه و تو پروفایل هر شخص هم قابل ادیت هست حالا فقط نمیدونم باید چطوری ایمیل رو حذف کنم از صفحه ثبت نام و فقط با شماره موبایل و پسورد کاربر وارد سایت بشه(تقریبا منظورم خط دوم صحبت شماست راستی من این بخشو به صورت یک پلاگین تا الان نوشتم . نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 (ویرایش شده) <?php /* Plugin Name: ورود با موبایل / */ add_action( 'register_form', 'crf_registration_form' ); function crf_registration_form() { ?> <p> <label for="mpmobile">شماره موبایل<br/> <input type="text" class="form-control" name="mpmobile" id="reg_billing_mob_num" value="<?php if ( ! empty( $_POST['mpmobile'] ) ) esc_attr_e( $_POST['mpmobile'] ); ?>" /> </label> </p> <?php } add_filter( 'registration_errors', 'crf_validate_mobnum_register', 10, 3 ); function crf_validate_mobnum_register( $errors, $sanitized_user_login, $user_email ) { if ( isset( $_POST['mpmobile'] ) && empty( $_POST['mpmobile'] ) ) { $errors->add( 'mpmobile_error', __( 'شماره تلفن همراه خود را وارد کنید.', 'woocommerce' ) ); } elseif (isset( $_POST['mpmobile'] ) && !preg_match("/^09-?[0-9]{2}-?[0-9]{3}-?[0-9]{4}$/", $_POST['mpmobile'] )) { $errors->add( 'mpmobile_error', __( 'شماره تلفن همراه خود را در قالب درست وارد کنید.', 'woocommerce' ) ); } else { $yoursearchquery = $_POST['mpmobile'] ; $args = array( 'meta_key' => 'mpmobile', 'meta_value' => $yoursearchquery, 'number' => 1 ) ; $user_query = new WP_User_Query( $args ); // User Loop if ( ! empty( $user_query->results ) ) { $errors->add( 'mpmobile_error', __( 'این شماره تلفن در سیستم قبلا ثبت نام شده است.', 'woocommerce' ) ); } } return $errors; } add_action( 'user_register', 'crf_user_register' ); function crf_user_register( $user_id ) { if ( isset( $_POST['mpmobile'] ) ) { update_user_meta( $user_id, 'mpmobile', sanitize_text_field( $_POST['mpmobile'] ) ); } } add_action( 'show_user_profile', 'my_show_mobnum_profile_fields' ); add_action( 'edit_user_profile', 'my_show_mobnum_profile_fields' ); function my_show_mobnum_profile_fields ( $user ){ ?> <table class="form-table"> <tr> <th><label for="mpmobile">شماره تلفن همراه</label></th> <td> <input type="text" name="mpmobile" id="mpmobile" value="<?php echo esc_attr( get_the_author_meta( 'mpmobile', $user->ID ) ); ?>" class="regular-text" /> <span class="description">لطفا شماره تلفن همراه را وارد کنید ، به طور مثال : ۰91200000000</span> </td> </tr> </table> <?php } add_action( 'personal_options_update', 'save_extra_user_profile_fields' ); add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' ); function save_extra_user_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; } update_user_meta( $user_id, 'mpmobile', $_POST['mpmobile'] ); } ویرایش شده تیر 97 توسط neda299 1 نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 در در 6/26/2018 at 10:32، lord_viper گفته است : از اونجایی که در کدنویسی وردپرس خوب هستین کاری که باید انجام بدین این هست در بخش ثبت نام باید یک فیلد به اسم موبایل اضافه کنید و شماره موبایل رو در یوزر متا ذخیره کنید برای لاگین هم باید از طریق شماره موبایل user_login رو بدست بیارین بعد از طریق تابع wp_signon لاگین کردن(یوزر و پسورد) رو چک و انجام بدین سلام مجدد و تشکر بابت پاسخ دهیتون امکانش هست در مورد خط دومتون بیشتر توضیح بدین؟ (برای لاگین هم باید از طریق شماره موبایل user_login رو بدست بیارین بعد از طریق تابع wp_signon لاگین کردن(یوزر و پسورد) رو چک و انجام بدین) نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 ببینین WP_SIGNON 2 تا پارامتر میگیره user_login و password خب حرکت شما این هست که از شماره موبایل به user_login برسین تا بتونین لاگین رو انجام بدین برای این کار با استفاده از شماره موبایل که تو جدول usermeta هست user_id رو بدست میارین و از طریق این user_id هم user_login مرتبط با اون شماره موبایل رو بدست میارین بعد با استفاده از user_loogin وpassword که کاربر وارد کرده به تابع wp_signop ارسال میکنین در صورتی که یوزر و پسورد صحیح باشه(برای 1 کاربر ) باشه لاگین میشه این برای زمانی هست که بخش لاگین رو خودتون نوشته باشین اگه میخواهید برای لاگینهای دیگه یا لاگین وردپرس این کار رو انجام بدین باید از هوک زیر استفاده کنید add_action( 'wp_authenticate' , 'check_custom_authentication' ); 2 نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 وقت بخیر من این کد رو نوشتم ولی بازم وارد سایت نمیشه // shortcode login form add_shortcode('newloginform','myplugin_add_login_fields'); add_action( 'login_form', 'myplugin_add_login_fields' ); function myplugin_add_login_fields() { if ( isset( $_POST['wp-submit'] )) { $mobid = $_POST['mpmobile']; $redirectt = $_POST['redirect']; $formpwd = $_POST['pwd']; if ( ! empty($mobid) || ! empty($formpwd) ) { $args = array( 'meta_query' => array( array( 'key' => 'mpmobile', 'value' => $mobid, ) ) ); $user_query = new WP_User_Query( $args ); if ( ! empty( $user_query->get_results() ) ) { foreach ( $user_query->get_results() as $user ) { $userlog = $user->user_login; $userpa = $_POST['pwd']; } add_action('wp_authenticate','tiny_login'); function tiny_login() { $creds = array(); $creds['user_login'] = $userlog; $creds['user_password'] = $userpa; $creds['remember'] = false; $user = wp_signon( $creds ); echo $user; if ( is_wp_error($user) ) { $tiny_error = $user->get_error_message(); } else { wp_redirect($redirectt); echo $redirectt; } } } else { echo 'این شماره در سیستم ثبت نشده است.'; } }else{ echo 'شماره تلفن همراه یا پسورد وارد نشده است.'; } } ?> <form id="login-form" action="<?php //echo wp_login_url();?>" method="post"> شماره همراه : <input type="text" name="mpmobile" /> پسورد : <input id="login-password" type="password" name="pwd" /> <input type="text" name="redirect" value="/wp-admin/"> <input id="login-submit" type="submit" name="wp-submit" value="ورود" /> <a id="membership" href="<?php echo wp_login_url();?>?action=register">عضویت</a> <a href="<?php echo wp_login_url();?>?action=lostpassword">رمز خود را فراموش کرده ام!</a> </form> <?php } دیگه واقعا نمیدونم باید چکار کنم نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 در در 6/28/2018 at 19:17، lord_viper گفته است : ببینین WP_SIGNON 2 تا پارامتر میگیره user_login و password خب حرکت شما این هست که از شماره موبایل به user_login برسین تا بتونین لاگین رو انجام بدین برای این کار با استفاده از شماره موبایل که تو جدول usermeta هست user_id رو بدست میارین و از طریق این user_id هم user_login مرتبط با اون شماره موبایل رو بدست میارین بعد با استفاده از user_loogin وpassword که کاربر وارد کرده به تابع wp_signop ارسال میکنین در صورتی که یوزر و پسورد صحیح باشه(برای 1 کاربر ) باشه لاگین میشه این برای زمانی هست که بخش لاگین رو خودتون نوشته باشین اگه میخواهید برای لاگینهای دیگه یا لاگین وردپرس این کار رو انجام بدین باید از هوک زیر استفاده کنید add_action( 'wp_authenticate' , 'check_custom_authentication' ); میشه این سوالم هم جواب بدین یک دنیا تشکر نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 منظورتون کدی که نوشتین هست؟ کدتون تقریبا به صورت زیر میشه // shortcode login form add_shortcode('newloginform','myplugin_add_login_fields'); add_action( 'login_form', 'myplugin_add_login_fields' ); function myplugin_add_login_fields() { if ( isset( $_POST['wp-submit'] )) { $mobid = $_POST['mpmobile']; $redirectt = $_POST['redirect']; $formpwd = $_POST['pwd']; if ( ! empty($mobid) || ! empty($formpwd) ) { $user_query = get_users(array('meta_key' => 'mpmobile', 'meta_value' => $mobid)); if ( ! empty( $user_query) ) { $creds = array(); $creds['user_login'] = $user_query->user_login; $creds['user_password'] = $formpwd; $creds['remember'] = false; $user = wp_signon( $creds ); echo $user; if ( is_wp_error($user) ) { $tiny_error = $user->get_error_message(); } else { wp_redirect($redirectt); echo $redirectt; } } } else { echo 'این شماره در سیستم ثبت نشده است.'; } }else{ echo 'شماره تلفن همراه یا پسورد وارد نشده است.'; } ?> <form id="login-form" action="<?php //echo wp_login_url();?>" method="post"> شماره همراه : <input type="text" name="mpmobile" /> پسورد : <input id="login-password" type="password" name="pwd" /> <input type="text" name="redirect" value="/wp-admin/"> <input id="login-submit" type="submit" name="wp-submit" value="ورود" /> <a id="membership" href="<?php echo wp_login_url();?>?action=register">عضویت</a> <a href="<?php echo wp_login_url();?>?action=lostpassword">رمز خود را فراموش کرده ام!</a> </form> <?php } 1 نقل قول لینک به ارسال
neda299 2 ارسال شده در تیر 97 مالک گزارش بازنشر ارسال شده در تیر 97 متاسفانه در همه حالات این تابع wp_signon اصلا کار نمیکنه من الان میخوام وقتی شماره موبایل و پسورد زده میشه وارد داشبورد یا یک لینکی که میدم ری دایرکت بشه اما هیچ تغییری اعمال نمیشه در حال حاضر وقتی توی فرمم موبایل و پسورد میزنم ارور نمیده اما وارد هم نمیشه در 58 دقیقه قبل، lord_viper گفته است : منظورتون کدی که نوشتین هست؟ کدتون تقریبا به صورت زیر میشه // shortcode login form add_shortcode('newloginform','myplugin_add_login_fields'); add_action( 'login_form', 'myplugin_add_login_fields' ); function myplugin_add_login_fields() { if ( isset( $_POST['wp-submit'] )) { $mobid = $_POST['mpmobile']; $redirectt = $_POST['redirect']; $formpwd = $_POST['pwd']; if ( ! empty($mobid) || ! empty($formpwd) ) { $user_query = get_users(array('meta_key' => 'mpmobile', 'meta_value' => $mobid)); if ( ! empty( $user_query) ) { $creds = array(); $creds['user_login'] = $user_query->user_login; $creds['user_password'] = $formpwd; $creds['remember'] = false; $user = wp_signon( $creds ); echo $user; if ( is_wp_error($user) ) { $tiny_error = $user->get_error_message(); } else { wp_redirect($redirectt); echo $redirectt; } } } else { echo 'این شماره در سیستم ثبت نشده است.'; } }else{ echo 'شماره تلفن همراه یا پسورد وارد نشده است.'; } ?> <form id="login-form" action="<?php //echo wp_login_url();?>" method="post"> شماره همراه : <input type="text" name="mpmobile" /> پسورد : <input id="login-password" type="password" name="pwd" /> <input type="text" name="redirect" value="/wp-admin/"> <input id="login-submit" type="submit" name="wp-submit" value="ورود" /> <a id="membership" href="<?php echo wp_login_url();?>?action=register">عضویت</a> <a href="<?php echo wp_login_url();?>?action=lostpassword">رمز خود را فراموش کرده ام!</a> </form> <?php } نقل قول لینک به ارسال
Mr-Tarah 158 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 ببخشید چرا از پلاگین های آماده این کار استفاده نمی کنید؟ نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 97 گزارش بازنشر ارسال شده در تیر 97 اگه بخواهید از هوک استفاده کنید کد به صورت زیر میشه add_action( 'wp_authenticate' , 'check_custom_authentication'); function check_custom_authentication (&$mobid ) { global $wpdb; if(!is_numeric($mobid) or strlen($mobid)!=11) return; $user_query = get_users(array('meta_key' => 'mpmobile', 'meta_value' => $mobid)); if ( ! empty( $user_query) ) $mobid = $user_query[0]->data->user_login; } کد شما هم به صورت زیر میشه // shortcode login form add_shortcode('newloginform','myplugin_add_login_fields'); add_action( 'login_form', 'myplugin_add_login_fields' ); function myplugin_add_login_fields() { if ( isset( $_POST['wp-submit'] )) { $mobid = $_POST['mpmobile']; $redirectt = $_POST['redirect']; $formpwd = $_POST['pwd']; if ( ! empty($mobid) || ! empty($formpwd) ) { $user_query = get_users(array('meta_key' => 'mpmobile', 'meta_value' => $mobid,'fields'=>['user_login'])); if ( ! empty( $user_query) ) { $creds = array(); $creds['user_login'] = $user_query[0]->user_login; $creds['user_password'] = $formpwd; $creds['remember'] = false; $user = wp_signon( $creds ); echo $user; if ( is_wp_error($user) ) { $tiny_error = $user->get_error_message(); } else { wp_redirect($redirectt); echo $redirectt; } } } else { echo 'این شماره در سیستم ثبت نشده است.'; } }else{ echo 'شماره تلفن همراه یا پسورد وارد نشده است.'; } ?> <form id="login-form" action="<?php //echo wp_login_url();?>" method="post"> شماره همراه : <input type="text" name="mpmobile" /> پسورد : <input id="login-password" type="password" name="pwd" /> <input type="text" name="redirect" value="/wp-admin/"> <input id="login-submit" type="submit" name="wp-submit" value="ورود" /> <a id="membership" href="<?php echo wp_login_url();?>?action=register">عضویت</a> <a href="<?php echo wp_login_url();?>?action=lostpassword">رمز خود را فراموش کرده ام!</a> </form> <?php } 2 نقل قول لینک به ارسال
vahid162 0 ارسال شده در مهر 99 گزارش بازنشر ارسال شده در مهر 99 در در ۱۳۹۷/۴/۱۵ در 19:56، neda299 گفته است : متاسفانه در همه حالات این تابع wp_signon اصلا کار نمیکنه من الان میخوام وقتی شماره موبایل و پسورد زده میشه وارد داشبورد یا یک لینکی که میدم ری دایرکت بشه اما هیچ تغییری اعمال نمیشه در حال حاضر وقتی توی فرمم موبایل و پسورد میزنم ارور نمیده اما وارد هم نمیشه نقل قول به نتیجه رسدیدید؟ امکانش هست کد رو بزارید ک منم استفاده کنم؟ نقل قول لینک به ارسال
milipinkman 2 ارسال شده در مرداد 00 گزارش بازنشر ارسال شده در مرداد 00 یه راهنمایی چرتو پرت دیگه... نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .