Sayfa Başlığını Dinamik Olarak Nasıl Ayarlayabilirim?


19

Sayfa başlığını kodla değiştirmek mümkün müdür?

Örneğin, sayfanın adının "Siparişinizi Rezervasyon Yap" olduğunu varsayalım, ancak bunu "Kitap Siparişi # 123" olarak değiştirmek istiyorum.

Google'ı biraz aradım ve buraya baktım ve hiçbir şey görmedim. Bir eklenti veya kesmek bilen var mı?

wp_title sayfa başlığını döndürür ancak sayfa başlığının ayarlanmasına izin vermez: http://codex.wordpress.org/Function_Reference/wp_title


Değer nereden gelirdi? bu sayfada # 123 değeri nedir?
Sagive SEO

Yanıtlar:


23

Üzerinde hiçbir belge yok, ancak bunun için her zaman bir filtre uygulayabilirsiniz the_title:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

Bunlara bakın:

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter


Bu tüm başlıkları geçersiz kılıyor gibi görünüyor. Yalnızca geçerli başlığı nasıl geçersiz kılabilirim?
Petrus Theron

Geri if ($post->ID == 45) { ... }
Nick Barrett

3
the_titlefilter artık Wordpress'in en son sürümlerinde çalışmıyor , diğer yanıtlarda ayrıntılı olarak belirtildiği gibi kullanın document_title_partsveya pre_get_document_titlefiltreler.
Brendan Nee

8

Wordpress 4.4'ten itibaren, document_title_partsbaşlığı değiştirmek için Wordpress filtresini kullanabilirsiniz.

Aşağıdakileri şuraya ekleyin functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

ancak parametreyi bir filtreye nerede geçirirsiniz?
Tentenabülatör Zea

Yukarıdaki işlev, yolu the_title()ve get_the_title()işlevlerin çalışmasını değiştirir - bu nedenle herhangi bir parametre iletmeye gerek yoktur.
Brendan Nee

5

Belgenin titleniteliğini değiştirmek isteyenler için , wp_titlefiltreyi kullanmanın artık çalışmadığını gördüm . Bunun yerine, kullanmak filtresi :pre_get_document_title

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

Kaynak


1
yıllar sonra bu güncellemeyi yayınladığınız için teşekkür ederiz. Yıllardır bir eklenti içinde wp_title kullanıyordum ve şimdiye kadar işe yaramadığını fark etmedim ve cevabınız bana çok fazla çaba kazandırdı. Çok teşekkürler!
MatthewLee

@MatthewLee Size yardımcı olduğunu duyduğuma sevindim :)
Nathan Arthur

2

Gerçekten, geçerli sayfa için özel bir başlık (yani başlıktaki <title></title>etiketin içeriği ) görüntülemek veya sayfa gövdesindeki veya listelerdeki sayfaların başlığını filtrelemek isteyip istemediğinize bağlıdır .

Önceki durumda (geçerli sayfanın başlığı) şöyle bir filtre eklemeyi deneyin wp_title(): http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Sayfa başlıkları tahtada değişiklik yapmak istiyorsanız, filtreleme the_title()hile yapar: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


Aslında tecrübelerime göre ikisini de filtrelemeniz wp_titleve the_titleikisini de kapsamalısınız.
Geoffrey

Eminim onun yoksunluk nedeniyle ama tis benim için çalışmıyor. Kombinasyonları ve satır içi filtreleri denedim ve yeni Apply_filters ('pre_get_document_title', dize $ başlık)
indi

ne yazık ki ne de benim için çalıştı.
Debbie Kurth

Bu cevap neredeyse 6 yaşında; poster olarak (ve artık WP ile aktif olarak çalışmayan biri), bunun yerine en son belgelere bakmanızı öneririm.
nickb

1

Yoast'ı etkinleştirdiğinizde başlığı şu şekilde geçersiz kılmanız gerekir:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-2

Başlığı sayfa başına değiştirmek mi istiyorsunuz? Öncelikle özel bir gönderi bir kutuya uydurdu. Smashing Magazine bu konuyu yakın zamanda ele aldı: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . Daha sonra, özel meta kutusunun bir değeri varsa başlığı değiştirmek için basit bir işlev oluşturabilirsiniz.

Bu işlevi de sağlayan birkaç SEO eklentisi vardır. Örnekler için Yoast SEO'yu deneyin: http://wordpress.org/extend/plugins/wordpress-seo/

Bu yardımcı olur umarım.


1
Bu çözümler başlığı "dinamik olarak" değil "manuel olarak" değiştirmez.
Gustavo

1
kötü bir çözüm
Vishal Kumar Sahu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.