شما اینجا هستید
وردپرس » ریدایرکت کردن صفحه wp-login.php به برگه دلخواه

اگر قصد داشته باشید صفحات ورود و ثبت نام را در وردپرس برای خود به طور جداگانه طراحی کنید، لازم است که قبل از هر چیز صفحات پیشفرض وردپرس برای این منظور را به صفحات خود ریدایرکت کنید

مثلا صفحه ورود پیشفرض را به برگه ورود (که خودتان ایجاد کردید) ریدایرکت کنید و صفحه ثبت نام را هم همینطور به برگه عضویت

کافیست کدهای زیر را درون فایل functions.php قرار دهید

ریدایرکت کردن صفحه لاگین:

function redirect_login()
{
    if (!is_user_logged_in()) {
        wp_redirect(home_url('/login'));
        exit();
    }else{
        wp_redirect(home_url());
    }
}
add_action( 'login_form_login', 'redirect_login' );

ریدایرکت کردن صفحه ثبت نام:

function redirect_register()
{
    if (!is_user_logged_in()) {
        wp_redirect( home_url( '/registration' ) );
    exit();
    }else{
        wp_redirect(home_url());
    }
}
add_action( 'login_form_register', 'redirect_register' );

همچنین میتوانید صفحه profile.php را نیز به برگه دلخواه وصل کنید

add_action ('init' , 'prevent_profile_access');
function prevent_profile_access(){
    if (current_user_can('manage_options')) return '';
    if (strpos ($_SERVER ['REQUEST_URI'] , 'wp-admin/profile.php' )){
        wp_redirect ( home_url( '/profile' ) );
    }
}

برای صفحه فراموشی رمز عبور

function redirect_lost(){
    if (!is_user_logged_in()) {
        wp_redirect( home_url( '/registration' ) );
    exit();
}else{
    wp_redirect(home_url());
}
}
add_action( 'login_form_lostpassword', 'redirect_register' );

نتیجه گیریدر کل ریدایرکت ها با تابع wp_redirect انجام میشود که برگرفته از تابع header در php میباشد

همچنین میتوان به سه روش ریدایرکت کرد

گرفتن url با آرایه سراسری SERVER
گرفتن آدرس فعلی صفحه با متغیر سراسری $pagenow در وردپرس
اکشن ها (login_form_login مثلا)

راه دوم

این روش استاندارد تر است و میتوان از تابع wp_search_form بدون مشکل استفاده کرد

در مراحل قبلی نمیشد

add_action ('init' , 'prevent_profile_access');
function prevent_profile_access(){
    if (current_user_can('manage_options')) return '';
    if (strpos ($_SERVER ['REQUEST_URI'] , 'wp-admin/profile.php' )){
        wp_redirect ( home_url() );
    }
}


add_action ('init' , 'prevent_login_access');
function prevent_login_access(){
    if (current_user_can('manage_options')) return '';
    if (strpos ($_SERVER ['REQUEST_URI'] , 'wp-login' )){
        wp_redirect ( home_url() );
    }

}

میخواهیم فقط و فقط صفحه ورود را ریدایرکت کنیم

add_action ('init' , 'prevent_login_access');
function prevent_login_access(){
    if (current_user_can('manage_options')) return '';
    if (!strpos($_SERVER ['REQUEST_URI'] , 'wp-login.php?action')){
        wp_redirect ( home_url() );
    }
}

صفحه ثبت نام و فراموشی برعکس

اگر سوالی در مورد این مطلب دارید در قسمت نظرات همین پست ارسال کنید





اخبار زردیس | جدیدترین اخبار ایران و جهان