วิธีเปลี่ยนเส้นทางผู้ใช้หากไม่ได้ลงชื่อเข้าใช้ WordPress » Page Redirect

เผยแพร่แล้ว: 2022-01-02

วิธีเปลี่ยนเส้นทางหากไม่ได้ลงชื่อเข้าใช้ WordPress ในโพสต์ที่แล้ว ฉันสาธิตวิธีการตรวจสอบว่าผู้ใช้เข้าสู่ระบบใน WordPress หรือไม่ สาเหตุทั่วไปประการหนึ่งที่คุณอาจต้องการตรวจสอบว่าผู้ใช้ WordPress เข้าสู่ระบบหรือไม่ คือการแสดงหน้าต่างๆ ตามสถานะการเข้าสู่ระบบของผู้ใช้ WordPress หากคุณต้องการเปลี่ยนเส้นทางผู้ใช้หากไม่ได้ลงชื่อเข้าใช้ WordPress คุณสามารถทำได้โดยเพิ่มข้อมูลโค้ดในไฟล์ functions.php ของคุณ ดังที่คุณจะเห็นในบทแนะนำสั้นๆ นี้

ทำไมต้องเปลี่ยนเส้นทางผู้ใช้ใน WordPress?

การเปลี่ยนเส้นทางผู้ใช้เป็นข้อกำหนดที่สำคัญสำหรับไซต์ WordPress ส่วนใหญ่ มีหลายครั้งที่คุณอาจต้องการเปลี่ยนเส้นทางผู้ใช้จากหน้าหนึ่งไปยังอีกหน้าหนึ่ง ตัวอย่างเช่น คุณสามารถเปลี่ยนเส้นทางผู้ใช้ WooCommerce หลังจากชำระเงิน หรือคุณสามารถเปลี่ยนเส้นทางผู้ใช้หลังจากลงทะเบียนหรือเปลี่ยนเส้นทางเข้าสู่เว็บไซต์

หากต้องการเปลี่ยนเส้นทางหากไม่ได้ลงชื่อเข้าใช้ WordPress เป็นหนึ่งในการเปลี่ยนเส้นทางที่พบบ่อยที่สุด แม้ว่าจะมีปลั๊กอินที่สามารถช่วยจัดการการเปลี่ยนเส้นทางใน WordPress ได้ แต่การเพิ่มข้อมูลโค้ดขนาดเล็กที่ช่วยแก้ปัญหานี้เป็นทางออกที่ดีกว่าการใช้ปลั๊กอินของบุคคลที่สาม

ในบทช่วยสอนนี้ ฉันจะสาธิตวิธีเพิ่มข้อมูลโค้ดในธีมหรือปลั๊กอินของคุณที่สร้างการเปลี่ยนเส้นทางสำหรับผู้ใช้ที่ไม่ได้เข้าสู่ระบบในหน้าที่คุณเลือก

ขั้นตอนในการเปลี่ยนเส้นทางหากไม่ได้ลงชื่อเข้าใช้ WordPress

หากต้องการใช้การเปลี่ยนเส้นทางหากไม่ได้เข้าสู่ระบบใน WordPress คุณควรทำตามขั้นตอนต่อไปนี้:

  1. ลงชื่อเข้าใช้ไซต์ WordPress ของคุณ และไปที่ตัวแก้ไขธีมภายใต้เมนูลักษณะที่ปรากฏบนเมนูแดชบอร์ดหลัก
  2. เปิดไฟล์ functions.php ของธีม WordPress ที่ใช้งานอยู่ คุณยังสามารถใช้ CPanel หรือ FTP เพื่อเข้าถึงไฟล์ functions.php ของธีมที่ใช้งานอยู่ มันตั้งอยู่บนเส้นทางนี้ - wp-root-installation/wp-content/themes/active-theme/functions.php
  3. สร้าง action hook ที่เกี่ยวกับ admin initialization hook – admin_init เช่น add_action('init', 'redirect_if_not_logged_in') เบ็ดนี้มีฟังก์ชันเรียกกลับซึ่งจะมีตรรกะในการตรวจสอบว่าผู้ใช้เข้าสู่ระบบใน WordPress หรือไม่ และหากไม่ได้เข้าสู่ระบบ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าที่เราต้องการ
  4. สร้างฟังก์ชันเรียกกลับตามที่เราได้กล่าวไว้ข้างต้น และเพิ่มโค้ดตามนั้น
  5. บันทึกการเปลี่ยนแปลงและไปที่ส่วนหน้าเพื่อทดสอบว่าผู้ใช้ที่ไม่ได้เข้าสู่ระบบถูกเปลี่ยนเส้นทางไปยังหน้าที่คุณเพิ่มในโค้ดหรือไม่

ให้เราสาธิตวิธีการเพิ่มการเปลี่ยนเส้นทางหากผู้ใช้ไม่ได้เข้าสู่ระบบใน WordPress ฉันจะใช้ธีม WordPress เริ่มต้นในการติดตั้ง localhost แต่สิ่งนี้สามารถใช้ได้กับไซต์อื่นๆ ทั้งหมด โดยไม่คำนึงถึงธีมและสภาพแวดล้อมการโฮสต์

โค้ดสำหรับเพิ่มการเปลี่ยนเส้นทางอาจใช้เงื่อนไขอื่น เช่นในกรณีส่วนใหญ่เมื่อคุณต้องการจำกัดเนื้อหาจากผู้ใช้ที่ไม่ได้เข้าสู่ระบบ คุณจะต้องตรวจสอบสองเงื่อนไข:

  • หากผู้ใช้เข้าสู่ระบบ
  • หากผู้ใช้อยู่ในหน้าที่คุณมีเนื้อหาที่ถูกจำกัด

เมื่อตรงตามเงื่อนไขเหล่านี้ คุณควรใช้ฟังก์ชัน wp_redirect() เพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าที่คุณเลือก

ฟังก์ชัน WP : wp_redirect()

นี่คือฟังก์ชันการเปลี่ยนเส้นทางของ WordPress ที่สามารถใช้ในธีมและปลั๊กอินเพื่อเปลี่ยนเส้นทางผู้ใช้ นิพจน์ทั่วไปของฟังก์ชันนี้มีดังต่อไปนี้:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

ดังที่คุณเห็นฟังก์ชั่นมีสามพารามิเตอร์ดังต่อไปนี้:

พารามิเตอร์ คำอธิบาย
$location นี่คือ URL ที่คุณต้องการเปลี่ยนเส้นทางผู้ใช้ เมื่อคุณใช้ฟังก์ชันนี้เมื่อผู้ใช้ไม่ได้เข้าสู่ระบบ คุณจะต้องระบุ URL ไปยังหน้าที่เราจะเปลี่ยนเส้นทางผู้ใช้ตามที่คุณจะเห็นในตัวอย่างโค้ด
$status นี่เป็นพารามิเตอร์ทางเลือก และคุณอาจไม่เห็นว่ามีการใช้บ่อย แต่เป็นรหัสสถานะการตอบสนอง HTTP ที่จะใช้ ค่าเริ่มต้น '302' และคุณสามารถใช้ 301 สำหรับการเปลี่ยนเส้นทางแบบถาวรได้ โปรดใช้ความระมัดระวังเมื่อคุณใช้พารามิเตอร์นี้กับตัวเลือกการเปลี่ยนเส้นทาง 301
$x_redirect_by นี่เป็นเพียงแอปพลิเคชันที่ใช้การเปลี่ยนเส้นทางและแทบจะไม่เปลี่ยนค่าเริ่มต้นซึ่งก็คือ WordPress

การดำเนินการเปลี่ยนเส้นทางเทมเพลตหากผู้ใช้ไม่ได้เข้าสู่ระบบ

หากต้องการเปลี่ยนเส้นทางผู้ใช้ที่ไม่ได้เข้าสู่ระบบใน WordPress คุณสามารถใช้ฟังก์ชัน wp_redirect กับการตรวจสอบตามเงื่อนไขว่าผู้ใช้ลงชื่อเข้าใช้ดังนี้:

 add_action( 'template_redirect', 'redirect_if_user_not_logged_in' );

ฟังก์ชัน redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && ! is_user_logged_in() ) { //example can be is_page(23) โดยที่ 23 คือ ID ของเพจ

		wp_redirect( 'http://your-redirect-page-here'); 
 
     exit;// อย่าลืมทางออกนี้ เพราะมันสำคัญมากสำหรับ wp_redirect() ที่จะต้องมี exit / die
   
   }
   
}

แทนที่กระสุนของการตรวจสอบตามเงื่อนไขด้วยหน้าที่เกี่ยวข้องและแทนที่ URL เปลี่ยนเส้นทางในโค้ดด้านบนและเพิ่มไปยัง functions.php เพื่อเปลี่ยนเส้นทางผู้ใช้ที่ไม่ได้เข้าสู่ระบบไปยัง URL ของหน้านั้น

ผู้ดูแลระบบ Init Redirect Action หากผู้ใช้ไม่ได้เข้าสู่ระบบ

หรือคุณสามารถขอ admin_init แทน template_redirect เพื่อเปลี่ยนเส้นทางผู้ใช้หากไม่ได้ลงชื่อเข้าใช้ WordPress

รหัสควรเหมือนกันนอกเหนือจากจุดที่เพิ่มเบ็ดการดำเนินการ รหัสควรเป็นดังนี้:

 add_action( 'admin_init', 'redirect_if_user_not_logged_in' );

ฟังก์ชัน redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug') ) {

      wp_redirect( 'http://your-redirect-page-here'); 
   
   ทางออก;
   }
}

เมื่อเราเพิ่มโค้ดนี้ในธีมเริ่มต้นของ WordPress functions.php และเพิ่มกระสุนสำหรับหน้าที่เราต้องการสร้างการเปลี่ยนเส้นทางและ URL สำหรับปลายทาง มันทำงานได้อย่างสมบูรณ์ตามที่คุณเห็น:

วิธีเปลี่ยนเส้นทางหากไม่ได้ลงชื่อเข้าใช้ WordPress

ความคิดสุดท้าย

เมื่อคุณต้องการสร้างการเปลี่ยนเส้นทางหากผู้ใช้ไม่ได้เข้าสู่ระบบใน WordPress คุณต้องตรวจสอบก่อนว่าผู้ใช้เข้าสู่ระบบโดยใช้รหัสที่ฉันแชร์ในโพสต์นั้นหรือไม่ จากนั้นใช้ ฟังก์ชัน wp_redirect() เพื่อเพิ่มปลายทางใหม่ที่ผู้ใช้ควร จะถูกเปลี่ยนเส้นทางหากพวกเขาเข้าถึงบางหน้าหรือโพสต์

คุณสามารถเพิ่มโค้ดนี้ลงในไฟล์ functions.php ของธีมของคุณ หรือคุณสามารถใช้เป็นส่วนหนึ่งของปลั๊กอิน WordPress ที่คุณกำหนดเองได้ เป็นสิ่งสำคัญที่ต้องจำไว้เสมอว่า เมื่อคุณใช้ฟังก์ชัน wp_redirect คุณ ไม่ ควรลืม เพิ่ม exit เนื่องจากฟังก์ชันนี้จะไม่ออกโดยอัตโนมัติ

ในฐานะนักพัฒนาปลั๊กอิน WordPress คุณอาจพิจารณาปลั๊กอินเปลี่ยนเส้นทาง WordPress อื่น wp_safe_redirect() ซึ่งเป็นวิธีที่ดีกว่าในการเปลี่ยนเส้นทาง เนื่องจากจะตรวจสอบว่าโฮสต์พารามิเตอร์ $location ได้รับอนุญาตหรือไม่

บทความที่คล้ายกัน