Bagaimana Saya Mengatur Judul Halaman secara Dinamis?

19

Apakah mungkin mengubah judul halaman dengan kode?

Misalnya, katakanlah nama halaman adalah "Pesan Pesanan Anda", tetapi saya ingin mengubahnya menjadi "Pemesanan Buku # 123".

Saya sedikit Google dan melihat di sini dan tidak melihat apa-apa. Adakah yang tahu tentang plugin atau hack?

wp_title mengembalikan judul halaman tetapi tidak mengizinkan pengaturan judul halaman: http://codex.wordpress.org/Function_Reference/wp_title

Alex Cook
sumber
Dari mana nilai itu berasal? apa yang ada di halaman itu dengan nilai # 123?
Sagive SEO

Jawaban:

23

Tidak ada dokumentasi tentang itu tetapi Anda selalu dapat menerapkan filter the_titleseperti ini:

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;
}

Lihat ini:

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

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

Jared
sumber
Ini tampaknya menimpa semua judul. Bagaimana cara mengesampingkan hanya judul saat ini?
Petrus Theron
Anda perlu menambahkan syarat ke callback, misalnyaif ($post->ID == 45) { ... }
Nick Barrett
3
the_titlefilter tidak lagi berfungsi di Wordpress versi terbaru, gunakan document_title_partsatau pre_get_document_titlefilter seperti yang dirinci dalam jawaban lain.
Brendan Nee
8

Pada Wordpress 4.4, Anda dapat menggunakan filter Wordpress document_title_partsuntuk mengubah judul.

Tambahkan yang berikut ke 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;
}
Brendan Nee
sumber
tetapi di mana Anda mengirimkan parameter ke filter?
Tintinabulator Zea
Fungsi di atas mengubah cara the_title()dan get_the_title()fungsi berfungsi - jadi tidak perlu melewati parameter apa pun.
Brendan Nee
5

Bagi mereka yang ingin mengubah titleatribut dokumen , saya menemukan bahwa menggunakan wp_titlefilter tidak lagi berfungsi. Sebaliknya, gunakan yang pre_get_document_titlepenyaring :

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

Sumber

Nathan ReinstateMonica Arthur
sumber
1
terima kasih telah kembali beberapa tahun kemudian untuk memposting pembaruan ini. Saya telah menggunakan wp_title dalam plugin saya selama bertahun-tahun dan tidak menyadari itu tidak berfungsi sampai sekarang dan jawaban Anda menyelamatkan saya banyak usaha. Jadi terima kasih
MatthewLee
@MatthewLee Senang mendengarnya membantu Anda :)
Nathan ReinstateMonica Arthur
2

Sangat tergantung jika Anda ingin menampilkan judul khusus untuk halaman saat ini (yaitu konten <title></title>tag di header) atau memfilter judul halaman di badan halaman atau dalam daftar.

Dalam kasus sebelumnya (judul halaman saat ini), coba tambahkan filter untuk wp_title()seperti: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Jika Anda ingin memodifikasi judul halaman secara keseluruhan, pemfilteran the_title()akan melakukan trik: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

nickb
sumber
Sebenarnya dalam pengalaman saya, Anda perlu memfilter keduanya wp_titledan the_titleuntuk menutupi keduanya.
Geoffrey
Saya tidak yakin apakah ini karena penghinaan tetapi ini tidak bekerja untuk saya. Saya telah mencoba kombinasi dan filter sebaris dan apply_filters baru ('pre_get_document_title', string $ title)
mendarat
sayangnya tidak ada yang bekerja untuk saya juga.
Debbie Kurth
Jawaban ini hampir 6 tahun; sebagai poster (dan seseorang yang tidak aktif bekerja dengan WP lagi), saya akan menyarankan untuk melihat dokumentasi terbaru sebagai gantinya.
julukan
1

Ketika mengaktifkan Yoast, Anda perlu mengganti judul seperti:

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

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

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
leymannx
sumber
-2

Jadi, Anda ingin mengubah judul berdasarkan per halaman? Pertama-tama mengatur posting kustom bertemu kotak. Smashing Magazine meliput ini baru-baru ini: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . Anda kemudian dapat membuat fungsi sederhana untuk mengganti judul jika kotak meta khusus memiliki nilai.

Ada beberapa plugin SEO yang juga menyediakan fungsi ini. Coba Yoast SEO untuk contoh: http://wordpress.org/extend/plugins/wordpress-seo/

Semoga ini membantu.

Chris Mooney
sumber
1
Solusi ini tidak akan mengubah judul "secara dinamis" tetapi "secara manual".
Gustavo
1
solusi terburuk yang pernah
Vishal Kumar Sahu