Özel bir yazı türü, ancak ayrı veritabanı tabloları kullanmayan bir eklenti geliştiriyorum. Kullanıcının bir kursa abone olabileceği farklı kurs ayrıntı sayfalarına yönlendiren bağlantıları olan kursların bir listesini görüntüleyen bir eklentidir.
Mevcut durumda, eklenti verilerini özel sayfa şablonuyla (page-courses.php) bir sayfaya almak için bir kısa kod kullanıyorum.
Şimdi the_title()
eklentinin gösterdiği sayfaya göre (derslerin listesi, formlarla ders ayrıntıları sayfası, form gönderme başarı sayfası) dinamik olarak değiştirmek istiyorum . Ancak bunu aşağıdaki filtreyle yaptığımda, altbilgideki diğer sayfalara olan bağlantılar da değişir:
<?php
add_filter('the_title', 'custom_page_title');
function custom_page_title() {
return 'Custom Title';
}
Düzenle
Footer.php dosyasında wp_nav_menu()
, Görünüm> Menüler'de tanımlayabilmem için altbilgi bağlantıları içeren bir işlevim var . Ancak yukarıdaki filtreyle, altbilgideki tüm bağlantılar da 'Özel Başlık' olarak değişir. Ancak, yalnızca altbilgideki menü bağlantılarını etkilemeden sayfanın başlığını değiştirmek istiyorum.
Koşullu bir etiket eklemeye çalışıldığında in_the_loop()
, altbilgi bağlantıları döngüde olmamasına rağmen yine de etkilenir.
<?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';
}
Bu soruya benzer: nav'daki the_title sorununu filtreleyin , sadece etkilenen bağlantılar altbilgide bulunur ve in_the_loop()
çalışmaz.
Nasıl değiştirebilirim the_title()
sadece gösterilmeden Mevcut sayfanın başlığını etkileyen ederken altbilgideki bağlantıları etkilemeyen ?
Düzenleme 2 - Çözüm
Sonunda işe koyuldum:
<?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 dosyası, 'Dersler' adlı statik sayfaya atadığım Özel Gönderi Şablonudur.
Statik sayfanın adı ve Özel Yazı Şablonu'nun dosya adı aynı olduğundan daha önce işe yaramadığını varsayıyorum.
in_the_loop()
true
her the_post()
tetiklendiğinde olarak ayarlanır . Çekirdeğe fazla derinlemesine bakmadan ve gezinme menülerinin kendilerinin döngüler olduğunu bilmeden , yol boyunca bir yerde wp_nav_menu()
bir döngü oluşturduğunu in_the_loop()
ve dönüşe neden olduğunu tahmin ediyorum true
.