ตอนนี้เมื่อฉันออกจากระบบผ่าน:
<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>
มันนำฉันไปยังหน้าที่ฉันต้องการยืนยันการออกจากระบบ
จะกำจัดคำยืนยันและเปลี่ยนเส้นทางไปยังหน้าแรกหลังจากออกจากระบบได้อย่างไร
ตอนนี้เมื่อฉันออกจากระบบผ่าน:
<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>
มันนำฉันไปยังหน้าที่ฉันต้องการยืนยันการออกจากระบบ
จะกำจัดคำยืนยันและเปลี่ยนเส้นทางไปยังหน้าแรกหลังจากออกจากระบบได้อย่างไร
คำตอบ:
สิ่งนี้เกิดขึ้นเนื่องจากคุณไม่มีข้อมูลที่ไม่จำเป็นใน URL ซึ่งกำลังตรวจสอบอยู่ wp-login.php
case 'logout' :
check_admin_referer('log-out');
...
ใช้wp_logout_url
เพื่อเรียกคืน URL รวมถึง nonce หากคุณต้องการเปลี่ยนเส้นทางไปยัง URL ที่กำหนดเองเพียงแค่ส่งเป็นอาร์กิวเมนต์
<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
คุณสามารถใช้wp_loginout
สิ่งที่สร้างลิงค์ให้คุณรวมถึงการแปล:
echo wp_loginout('/redirect/url/goes/here')
wp_logout_url( get_permalink())
และหน้ายืนยันไม่ผ่าน Nonce ถูกสร้างขึ้นเป็นส่วนหนึ่งของ URL แต่ฉันยังคงถูกส่งไปยังหน้าการยืนยัน
หากคุณไม่สามารถใช้wp_logout_url()
ฟังก์ชั่นคุณสามารถปิดการตรวจสอบนี้โดยใช้รหัสนี้:
add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
/**
* Allow logout without confirmation
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
แทนที่'url-you-want-to-redirect'
ด้วย URL ที่คุณต้องการเปลี่ยนเส้นทางหลังจากออกจากระบบ
เพิ่มในของคุณ functions.php
ถ้าคุณสร้างลิงก์ที่กำหนดเองในเมนูของคุณตั้งค่าฉลากเพื่อ“Logout”
และตั้ง URL http://yourdomain.com/wp-login.php?action=logout
ไปยัง จากนั้นเพิ่มฟังก์ชั่นนี้ลงในfunctions.php
ไฟล์ของคุณ:
function change_menu($items){
foreach($items as $item){
if( $item->title == "Logout"){
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' );
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'change_menu');
หากคุณต้องการเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบหลังจากออกจากระบบคุณควรผนวก URL เข้าสู่ระบบเป็น:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
สิ่งนี้ใช้ได้สำหรับฉันโดยการเพิ่ม/?customer-logout=true
ในตอนท้าย
http://www.website.com/?customer-logout=true