ฟิลด์เข้าสู่ระบบ/ออกจากระบบในแถบเมนูอยู่นอกตำแหน่งและไม่ทำงาน (Wordpress)

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

    /* Custom Login Menu Field */
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) {
// start buffering
ob_start();
// this is the actual form function
wp_login_form($args); // $args optional see below ..
// get buffering
$loginoutform = ob_get_contents();
// clean buffering
ob_end_clean();
$items .= $loginoutform ; // concatenate buffering with items ...
return $items;
}

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

หากใครมีความรู้ในด้านนี้เกี่ยวกับวิธีที่ฉันสามารถเพิ่มหรือแก้ไขโค้ดเริ่มต้นได้ ฉันจะขอบคุณมาก ขอแสดงความนับถือ- Cypher

เว็บไซต์: cypherbeats.com ธีม: เพิ่มโค้ด Jarvis (ล่าสุด) ลงใน function.php แล้ว


person Cypher    schedule 03.01.2016    source แหล่งที่มา


คำตอบ (1)


ในขณะที่เขียน ฉันไม่เห็นแถบเข้าสู่ระบบที่คุณพูดถึง ดังนั้นจึงไม่สามารถบอกได้ว่ารหัสของคุณใช้งานได้หรือไม่

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

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) {
// start buffering
ob_start();
// this is the actual form function
if( !is_user_logged_in() )
    wp_login_form($args); // $args optional see below ..
else
    wp_loginout();
// get buffering
$loginoutform = ob_get_contents();
// clean buffering
ob_end_clean();
$items .= $loginoutform ; // concatenate buffering with items ...
return $items;
}

คำเตือน ฉันยังไม่ได้ทดสอบและเป็นเพียงข้อเสนอแนะเพื่อเริ่มต้นกับคุณ

นี่เป็นแนวทางอื่นที่อาจมีประโยชน์ ขั้นแรกให้ติดตั้งปลั๊กอินนี้: https://wordpress.org/plugins/nav-menu-roles/ จากนั้นสร้างลิงก์เข้าสู่ระบบที่มองเห็นได้เฉพาะผู้ใช้ที่ออกจากระบบ และลิงก์ออกจากระบบที่มองเห็นได้เฉพาะผู้ใช้ที่เข้าสู่ระบบเท่านั้น จากนั้นคุณสามารถเขียนจาวาสคริปต์ซึ่งทำให้แบบฟอร์มการเข้าสู่ระบบปรากฏขึ้นในไลท์บ็อกซ์เมื่อคุณกดปุ่มเข้าสู่ระบบ ฉันใช้วิธีนี้ที่ https://ptofchoice.com.au/

person James Jones    schedule 03.01.2016
comment
ขอขอบคุณสำหรับการตอบสนองของคุณ! ฉันขอขอบคุณที่คุณสละเวลาเพื่อช่วยฉัน และขออภัยที่ไม่ได้อยู่ที่นั่นในระหว่างที่คุณไปตรวจสอบ ฉันได้เพิ่มโค้ดบางส่วนด้วยตัวเองและทำให้เกิดข้อผิดพลาดร้ายแรงตลอดทั้ง WordPress และต้องกู้คืนข้อมูลสำรอง.. ฮ่าๆ ฉันจะให้ข้อมูลของคุณ และจะตอบกลับโดยเร็วที่สุดพร้อมผลลัพธ์ - person Cypher; 03.01.2016
comment
สวิตช์เพื่อแสดงการออกจากระบบใช้งานได้ :) อีกครั้งเมนูจะถูกยืดออกเพื่อแสดงแบบฟอร์ม และหลังจากเข้าสู่ระบบตัวเลือกการออกจากระบบก็จะโยนตัวเองถัดจากตัวเลือกเมนูการสนับสนุนของฉัน น่าเศร้าที่ฉันไม่มีความรู้เพียงพอที่จะนำแนวคิดนี้มารวมกันเป็นฟังก์ชันการทำงานที่สวยงาม ฉันได้ตรวจสอบเว็บไซต์ของคุณแล้วและต้องบอกว่าฉันชอบรูปลักษณ์ของมัน คงจะเป็นวิธีที่ดีกว่าสำหรับฉันอย่างแน่นอน แต่ฉันเป็นคนดื้อรั้นและไม่อยากยอมแพ้กับสิ่งนี้ - นอกจากนี้ ฉันจะทิ้งรหัสเข้าสู่ระบบนี้ไว้เพื่อให้คุณได้ตรวจสอบอีกครั้งว่าเกิดอะไรขึ้น - person Cypher; 03.01.2016
comment
โดยพื้นฐานแล้วคุณกำลังพยายามสร้างส่วนเข้าสู่ระบบของเมนู เนื่องจากคุณวางตำแหน่งแบบฟอร์มเข้าสู่ระบบไว้ตรงกลาง จึงอาจง่ายกว่าที่จะส่งออกเป็นโค้ดที่คุณสร้างส่วนหัว การทำให้ฟอร์มดูดีนั้นเป็นอีกปัญหาหนึ่งในการทำให้มันใช้งานได้จริง - person James Jones; 03.01.2016
comment
ใช่ อย่าคิดว่าฉันจะสนใจจริงๆ ว่ามันดูดีแค่ไหนในตอนนี้ ^-^ header.php ของฉันไม่ได้สร้างอะไรเลย ดังนั้นฉันจึงลองใช้ menu_section.php ของฉันแต่ทำไปรอบๆ และโค้ดก็เขียนไว้ตรงกลางเมนู เมื่อฉันรีเฟรชหน้าแรก (เขินอาย) แต่อย่างน้อยมันก็ทำให้ฉันมีคำใบ้ ฉันต้องการแสดงรหัส menu_section ของฉันเพื่อดูว่าคุณสามารถหาสถานที่ที่เหมาะสมสำหรับฉันที่จะเพิ่มในรหัสเข้าสู่ระบบของฉันได้หรือไม่ ฉันสามารถวางลงในความคิดเห็นที่นี่ได้ไหม? - person Cypher; 03.01.2016
comment
ฉันขอแนะนำให้คุณตั้งคำถามใหม่และโพสต์ลิงก์จะดีกว่า แบบฟอร์มเข้าสู่ระบบของคุณจะไม่เป็นส่วนหนึ่งของเมนู ฉันขอแนะนำอย่างยิ่งว่าอย่าใส่เขาลงในรหัสเมนูใดๆ - person James Jones; 03.01.2016
comment
ขอบคุณสำหรับคำตอบที่ทำเครื่องหมายไว้! เมื่อคุณโพสต์คำถามอื่น อย่าลืมใส่โค้ด header.php ด้วย แต่ฉันต้องเข้านอนแล้ว จะไม่สามารถโจมตีมันได้ประมาณ 10 ชั่วโมง - person James Jones; 03.01.2016
comment
เฮ้ ไม่มีปัญหา. ฉันซาบซึ้งมากสำหรับความช่วยเหลือของคุณ เป็นเรื่องยากมากที่จะเข้าใจทุกอย่าง ดังนั้นคนที่สละเวลามาช่วยฉันเรียนรู้จึงสุดยอดมาก นี่คือโพสต์ต่อ: stackoverflow.com/questions/34578323/ - person Cypher; 03.01.2016