ฉันกำลังพัฒนาปลั๊กอินที่ไม่ได้ใช้ประเภทโพสต์ที่กำหนดเอง แต่แยกตารางฐานข้อมูล เป็นปลั๊กอินที่แสดงรายการของหลักสูตรที่มีลิงก์ที่นำไปสู่หน้ารายละเอียดหลักสูตรที่แตกต่างกันซึ่งผู้ใช้สามารถสมัครเรียนหลักสูตรได้
ในสถานะปัจจุบันฉันใช้รหัสย่อเพื่อดึงข้อมูลปลั๊กอินลงในหน้าด้วยเทมเพลตหน้าแบบกำหนดเอง (page-courses.php)
ตอนนี้ฉันต้องการเปลี่ยนthe_title()
แบบไดนามิกตามหน้าเว็บที่ปลั๊กอินแสดง (รายการหลักสูตรหน้ารายละเอียดหลักสูตรพร้อมแบบฟอร์มหน้าส่งแบบฟอร์มสำเร็จ) แต่เมื่อใดก็ตามที่ฉันทำอย่างนั้นกับตัวกรองต่อไปนี้ลิงก์ไปยังหน้าอื่น ๆ ในส่วนท้ายก็เปลี่ยนไปเช่นกัน:
<?php
add_filter('the_title', 'custom_page_title');
function custom_page_title() {
return 'Custom Title';
}
แก้ไข
ใน footer.php ฉันมีฟังก์ชั่นที่มีลิงค์ส่วนท้ายด้วยwp_nav_menu()
ดังนั้นฉันจึงสามารถกำหนดได้ในลักษณะ> เมนู แต่ด้วยตัวกรองด้านบนลิงก์ทั้งหมดในส่วนท้ายก็เปลี่ยนเป็น 'ชื่อที่กำหนดเอง' แต่ฉันต้องการเปลี่ยนชื่อของหน้าไม่ส่งผลต่อลิงก์เมนูในส่วนท้าย
การพยายามเพิ่มแท็กแบบมีเงื่อนไขin_the_loop()
ลิงก์ส่วนท้ายยังคงได้รับผลกระทบแม้ว่าจะไม่ได้อยู่ในลูปก็ตาม
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
if ( in_the_loop() ) {
add_filter( 'the_title', 'custom_page_title' );
}
}
function custom_page_title() {
return 'Custom Title';
}
คล้ายกับคำถามนี้: กรอง the_title ปัญหาใน navเพียงว่าลิงก์ที่ได้รับผลกระทบอยู่ในส่วนท้ายและin_the_loop()
ไม่ทำงาน
ฉันฉันจะเปลี่ยนthe_title()
ในขณะที่เพียงส่งผลกระทบต่อชื่อของหน้าปัจจุบันการแสดงไม่ได้มีผลกระทบต่อการเชื่อมโยงในส่วนท้าย ?
แก้ไข 2 - โซลูชัน
ในที่สุดฉันก็ทำให้มันทำงาน:
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
add_filter( 'the_title', 'wpse83525_filter_the_title', 10, 2 );
}
function wpse83525_filter_the_title( $title, $id ) {
if ( 'page-listcourses.php' == get_post_meta( $id, '_wp_page_template', true ) ) {
return 'Custom Title';
}
return $title;
}
ไฟล์ page-listcourses.php เป็นเทมเพลตโพสต์ที่กำหนดเองที่ฉันกำหนดให้กับหน้าสแตติกชื่อ 'หลักสูตร'
ฉันคิดว่ามันใช้งานไม่ได้เพราะชื่อของหน้าสแตติกและชื่อไฟล์ของเทมเพลตโพสต์ที่กำหนดเองเหมือนกัน
in_the_loop()
ถูกตั้งค่าเป็นtrue
เมื่อใดก็ตามที่the_post()
ถูกไล่ออก โดยไม่ต้องขุดลึกเกินไปในหลักและรู้ว่าเมนู nav เป็นตัวloopsผมคาดเดาบางที่ไปพร้อมกันwp_nav_menu()
instantiates ห่วงก่อให้เกิดผลตอบแทนin_the_loop()
true