Saya sedang mengembangkan plugin yang tidak menggunakan jenis posting khusus, tetapi memisahkan tabel database. Ini adalah plugin yang menampilkan daftar program dengan tautan yang mengarah ke halaman detail kursus yang berbeda, di mana pengguna kemudian dapat berlangganan kursus.
Dalam kondisi saat ini, saya menggunakan kode pendek untuk memasukkan data plugin ke halaman dengan templat halaman khusus (page-courses.php).
Saya sekarang ingin mengubah the_title()
secara dinamis, sesuai dengan halaman yang ditampilkan plugin (daftar kursus, halaman rincian kursus dengan formulir, halaman keberhasilan pengiriman formulir). Tetapi setiap kali saya melakukannya dengan filter berikut, tautan ke halaman lain di footer juga berubah:
<?php
add_filter('the_title', 'custom_page_title');
function custom_page_title() {
return 'Custom Title';
}
Edit
Di footer.php saya memiliki fungsi yang menyertakan tautan footer wp_nav_menu()
sehingga saya dapat mendefinisikannya di Appearance> Menus. Tetapi dengan filter di atas, semua tautan di footer juga berubah menjadi 'Judul Kustom'. Tapi saya hanya ingin mengubah judul halaman, tidak mempengaruhi tautan menu di footer.
Mencoba menambahkan tag kondisional in_the_loop()
, tautan footer masih terpengaruh, meskipun tidak ada di 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';
}
Ini mirip dengan pertanyaan ini: filter masalah the_title di nav , hanya saja tautan yang terpengaruh ada di footer dan in_the_loop()
tidak berfungsi.
Bagaimana saya bisa mengubah the_title()
sementara hanya mempengaruhi judul halaman saat ini ditampilkan tidak mempengaruhi tautan di footer ?
Edit 2 - Solusi
Jadi saya akhirnya berhasil:
<?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;
}
File page-listcourses.php adalah Template Posting Kustom yang saya tetapkan untuk halaman statis bernama 'Kursus'.
Saya berasumsi itu tidak berfungsi sebelumnya karena nama halaman statis dan nama file Template Pos Kustom sama.
in_the_loop()
diatur ke true
setiap kali the_post()
dipecat. Tanpa menggali terlalu dalam ke inti, dan mengetahui bahwa menu nav sendiri loop , saya menduga bahwa di suatu tempat di sepanjang jalan, wp_nav_menu()
instantiates loop, menyebabkan in_the_loop()
untuk kembali true
.