مدیریت ریدایرکت در وردپرس

وردپرس

در این آموزش ما قصد داریم در مورد ریدایرکت در وردپرس توسط فیلترها بحث کنیم، با ما همراه باشید.
ابتدا ببینیم معنی هوک در وردپرس چیست؟
معنی لغوی هوک یعنی قلاب ! حالا قلاب در وردپرس چه نقشی می تواند داشته باشد ؟!!
هوک در وردپرس دو نوع است: action و filter .
اکشن: زمانی اجرا می شود که اتفاق خاصی در وردپرس رخ داده باشد مثلا کاربری در سایت ثبت نام کند یا یک پست جدید منتشر شود.
فیلتر: زمانی کاربرد دارد که مثلا بخواهیم قبل از نمایش یک پست در وبلاگ تغییراتی در آن بدهیم یا قبل از ذخیره یک مطلب در دیتابیس آن را ادیت کنیم.
از هوک در قالب های وردپرس، پلاگین ها و حتی هسته اصلی وردپرس هم استفاده می شود و میشه گفت جزو اصلی ترین قسمت های وردپرس به شمار میاد.
ما در آین آموزش بیشتر روی فیلترها با هم کار می کنیم.

-مدیریت ریدایرکت در وردپرس در حالات مختلف
ما در این آموزش با هفت فیلتر آشنا می شویم:
یکی برای ثبت نام
دو تا برای ورود (login) و خروج(logout)
یکی برای ریست کردن پسورد
یکی برای کامنت.

نکته:
اگر می خواهید کدهای آین آموزش را اجرا کنید مینوانید در فایل functions.php این کدها را جرا کنید و پیشنهاد می شود که یک وردپرس خام نصب کنید و این کدها را روی آن اجرا کنید که به مسئله خاصی برنخورید.

۱-ریدایرکت کردن کاربر در صورتی که ثبت نامش موفق باشد
در حالت عادی کاربر بعد از ثبت نام به صفحه لاگین می رود و پیغام “ثبت نام شما کامل شد، لطفا ایمیل خود را چک کنید” را مشاهده می کند.
حالا ما با کمک فیلتر registration_redirect تغییرات خود را اعمال می کنیم.

با استفاده از کد زیر کاربر را به صفحه مورد نظر خود بفرستید:

<?php
 
add_filter( 'registration_redirect', 'redir_new_users' );
  
function redir_new_users() {
    // change the slug below with your own page's slug
    return home_url( '/white-paper/' ); 
}
 
?>

با توجه به slug صفحات سایت خود می توانید “white-paper” را تغییر دهید.

۲- ریدایرکت کاربران بعد از ورود و خروج
هر کاربری بعد از لاگین به داشبورد پنل می رود، اگر شما به هر دلیلی نمی خواهید این اتفاق بیفتد می توانید با login_redirect آن را تغییر دهید.
در مثال زیر پس از چک کردن نقش کاربر او را به صفحه اصلی سایت هدایت می کنیم:

<?php
 
add_filter( 'login_redirect', 'send_subscribers_home', 10, 3 );
  
function send_subscribers_home( $location, $request, $user ) {
    global $user;
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'subscriber', $user->roles ) ) {
            return home_url();
        } else {
            return $redirect_to;
            }
    }
    return;
}
 
?>

همین کار را برای خروج کاربر نیز می توان انجام داد با این تفاوت که در خروج، کاربر به جای صفحه اصلی به یک صفحه برای تایید خروج هدایت می شود.

<?php
 
add_filter( 'logout_redirect', 'goodbye_subscribers', 10, 3 );
  
function goodbye_subscribers( $location, $request, $user ) {
    global $user;
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'subscriber', $user->roles ) ) {
            // change the slug below with your own page's slug
            return home_url( '/goodbye/' );
        } else {
            return $redirect_to;
            }
    }
    return;
}
 
?>

۳-ریدایرکت کاربر برای ریست کردن پسورد
به صورت پیشفرض کاربر پس از وارد کردن نام کاربری یا ایمیل خود در فرم فراموشی پسورد با پیغام “ایمیل خود را چک کنید” به صفحه لاگین هدایت میشود اما شما می توانید آن را با استفاده از فیلتر lostpassword_redirect تغییر دهید.
پیغام “ایمیل خود را چک کنید” برای اکثر سایت های وردپرسی کافیست اما اگر می خواهید این پیغام را نیز تغییر دهید یا قسمتی دیگر به آن اضافه کنید مانند”لطفا پوشه هرزنامه را چک کنید” یا هر پیغام دلخواه دیگری، می توانید کاربر را به یک صفحه خاص هدایت کنید:

<?php
 
add_filter( 'lostpassword_redirect', 'lostpassword_message' );
  
function lostpassword_message( $location ) {
    // change the slug below with your own page's slug
    return '/lost-password-notice/';
}
 
?>

۴- ریدایرکت کاربر بعد از نوشتن کامنت
فیلتر comment_post_redirect به شما امکان تغییر صفحه ای که کاربران پس از کامنت به آن هدایت می شوند را می دهد.
این کار می تونه یک ایده خیلی خوب باشه، مثلا شما کاربر را بعد از کامنت با پیغام “ممنون از کامنت شما، لطفا در خبرنامه ما عضو شوید” به صفحه خبرنامه هدایت کنید.

<?php
 
add_filter( 'comment_post_redirect', 'redirect_to_newsletter' );
  
function redirect_to_newsletter( $location ) {
    // change the slug below with your own page's slug
    return '/subscribe-to-our-newsletter/';
}
 
?>

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

0 دیدگاه در “مدیریت ریدایرکت در وردپرس”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی را در کادر زیر بنویسید *