Bagaimana untuk menyesuaikan tajuk dalam tema WordPress menggunakan pre_get_document_title

Versi WordPress 4.4 dan ke atas menggunakan penapis yang dipanggil pre_get_document_title () untuk tajuk penyesuaian untuk setiap halaman, pos, tag, kategori dan banyak lagi. Sebagai contoh, saya boleh menukar tajuk kesalahan 404 menggunakan penapis ini. Kita boleh menggunakan wp_title () yang sebelum ini tidak digunakan dalam versi 4.4 tetapi telah dikembalikan untuk sebab-sebab keserasian.
Mengembalikan tajuk dokumen untuk halaman semasa.
Marilah kita melihat cara mengubah atau menimpa tajuk halaman. Saya menggunakan tema Dua Puluh Enam Belas.

Sintaks dan contoh

Sintaksnya agak mudah:

// tambah penapis add_filter ('pre_get_document_title', 'change_my_title'); // Fungsi fungsi kami change_my_title ($ title) {kembali 'Judul baru saya'; }

// tambah penapis
add_filter ('pre_get_document_title', 'change_my_title');
// Fungsi kami
fungsi change_my_title ($ title) {
kembali 'Judul baru saya';
}

Di atas akan menukar tajuk untuk semua halaman / catatan / tag dan banyak lagi. Oleh itu, anda mesti menyesuaikannya mengikut keperluan anda. Contohnya hanya menukar tajuk halaman 404:

// tambah penapis add_filter ('pre_get_document_title', 'change_my_404_title'); // Fungsi fungsi kami change_my_404_title ($ title) {// cek jika ralat 404 sedang dipaparkan jika (is_404 ()) {return 'Error 404: Oh no. Nota halaman dijumpai :( ';} // lain kembali gelaran lalai default $ title;}

// tambah penapis
add_filter ('pre_get_document_title', 'change_my_404_title');
// Fungsi kami
fungsi change_my_404_title ($ title) {
// memeriksa jika ralat 404 dipaparkan
jika (is_404 ()) {
kembali 'Ralat 404: Oh tidak. Nota halaman dijumpai :( ';
}
/ / lain kembali tajuk lalai
kembali tajuk $;
}

Di atas penapis pre_get_document_title yang dibenarkan saya untuk menimpa tajuk halaman ralat HTTP 404 mengikut keperluan saya. Berikut adalah contoh lain di mana saya menyesuaikan tajuk untuk taksonomi tersuai saya:

add_filter ('pre_get_document_title', 'change_faq_tax_title'); fungsi change_faq_tax_title ($ title) {halaman global $, $ paged; // jika taksonomi Mudah jika (is_tax ('tutoriallevel', 'mudah')) {$ nix_title = single_term_title ('', false). 'untuk mengikuti tutorial Linux / Unix untuk pengguna baru - nixCraft'; / / Tambah nombor halaman jika perlu. {$ nix_title. = sprintf (__ ('Page% s'), maks ($ paged, $ muka)); } kembali $ nix_title; }}

add_filter ('pre_get_document_title', 'change_faq_tax_title');
fungsi change_faq_tax_title ($ title) {
halaman $ global, $ paged;
// jika taksonomi mudah
jika (is_tax ('tutoriallevel', 'mudah')) {
$ nix_title = single_term_title (", false). 'untuk mengikuti tutorial Linux / Unix untuk pengguna baru - nixCraft';
/ / Tambah nombor halaman jika perlu.
jika (($ paged> = 2 || $ page> = 2) &&! is_404 ()) {
$ nix_title. = sprintf (__ ('Page% s'), max ($ paged, $ page));
}
kembali $ nix_title;
}
}

Anda mesti meletakkan kod di atas functions.php terletak di dalam tema anak anda. Melewati nilai yang tidak kosong akan litar pintas wp_get_document_title (), mengembalikan nilai itu. wp_get_document_title () mengembalikan tajuk dokumen untuk halaman / tag / catatan semasa. Berikut adalah fungsi asal diambil dari Fail teras WordPress:

function wp_get_document_title() {
/**
* Filters the document title before it is generated. *
* Passing a non-empty value will short-circuit wp_get_document_title(),
* returning that value instead. *
* @since 4.4.0
*
* @param string $title The document title. Rangka kosong kosong. */
$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
return $title;
}
global $page, $paged;
$title = array(
'title' => '',
);
// If it's a 404 page, use a "Page not found" title. if ( is_404() ) {
$title['title'] = __( 'Page not found' );
// If it's a search, use a dynamic search results title. } elseif ( is_search() ) {
/* translators: %s: search phrase */
$title['title'] = sprintf( __( 'Search Results for “%s”' ), get_search_query() );
// If on the front page, use the site title. } elseif ( is_front_page() ) {
$title['title'] = get_bloginfo( 'name', 'display' );
// If on a post type archive, use the post type archive title. } elseif ( is_post_type_archive() ) {
$title['title'] = post_type_archive_title( '', false );
// If on a taxonomy archive, use the term title. } elseif ( is_tax() ) {
$title['title'] = single_term_title( '', false );
/*
* If we're on the blog page that is not the homepage or
* a single post of any post type, use the post title. */
} elseif ( is_home() || is_singular() ) {
$title['title'] = single_post_title( '', false );
// If on a category or tag archive, use the term title. } elseif ( is_category() || is_tag() ) {
$title['title'] = single_term_title( '', false );
// If on an author archive, use the author's display name. } elseif ( is_author() && $author = get_queried_object() ) {
$title['title'] = $author->display_name;
// If it's a date archive, use the date as the title. } elseif ( is_year() ) {
$title['title'] = get_the_date( _x( 'Y', 'yearly archives date format' ) );
} elseif ( is_month() ) {
$title['title'] = get_the_date( _x( 'F Y', 'monthly archives date format' ) );
} elseif ( is_day() ) {
$title['title'] = get_the_date();
}
// Add a page number if necessary. jika (($ paged> = 2 || $ page> = 2) &&! is_404() ) {
$title['page'] = sprintf( __( 'Page %s' ), max( $paged, $page ) );
}
// Append the description or site title to give context. if ( is_front_page() ) {
$title['tagline'] = get_bloginfo( 'description', 'display' );
} else {
$title['site'] = get_bloginfo( 'name', 'display' );
}
/**
* Filters the separator for the document title. *
* @since 4.4.0
*
* @param string $sep Document title separator. Lalai '-'. */
$sep = apply_filters( 'document_title_separator', '-' );
/**
* Filters the parts of the document title. *
* @since 4.4.0
*
* @param array $title {
*     The document title parts. *
*     @type string $title   Title of the viewed page. * @type string $ page Opsional. Nombor halaman jika paginated. * @type string $ tagline Pilihan. Penerangan tapak apabila di halaman rumah. * @type string $ site Option. Tajuk tapak apabila tidak di halaman rumah. * }
*/
$title = apply_filters( 'document_title_parts', $title );
$title = implode( " $sep ", array_filter( $title ) );
$title = wptexturize( $title );
$title = convert_chars( $title );
$title = esc_html( $title );
$title = capital_P_dangit( $title );
return $title;
}

fungsi wp_get_document_title () {
/ **
* Menapis tajuk dokumen sebelum dihasilkan.
*
* Lulus nilai yang tidak kosong akan litar pintas wp_get_document_title (),
* mengembalikan nilai tersebut.
*
* @ dari 4.4.0
*
* @param string $ title Judul dokumen. Rangka kosong kosong.
*/
$ title = apply_filters ('pre_get_document_title', ");
jika (! kosong (tajuk $)) {
kembali tajuk $;
}
halaman $ global, $ paged;
$ title = array (
'title' => ",
);
// Jika halaman 404, gunakan tajuk "Halaman tidak dijumpai".
jika (is_404 ()) {
$ title ['title'] = __ ('Laman tidak dijumpai');
// Jika carian itu, gunakan tajuk hasil carian dinamik.
} elseif (is_search ()) {
/ * penterjemah:% s: frasa carian * /
$ title ['title'] = sprintf (__ ('Hasil Carian untuk & # 8220;% s & # 8221;'), get_search_query ());
// Jika di halaman depan, gunakan tajuk tapak.
} elseif (is_front_page ()) {
$ title ['title'] = get_bloginfo ('name', 'display');
// Jika pada arkib jenis pos, gunakan tajuk arkib jenis pos.
} elseif (is_post_type_archive ()) {
$ title ['title'] = post_type_archive_title (", false);
// Jika dalam arkib taksonomi, gunakan tajuk istilah.
} elseif (is_tax ()) {
$ title ['title'] = single_term_title (", false);
/*
* Jika kita berada di halaman blog yang bukan laman utama atau
* satu jawatan bagi sebarang jenis jawatan, gunakan tajuk pos.
*/
} elseif (is_home () || is_singular ()) {
$ title ['title'] = single_post_title (", false);
// Jika dalam kategori atau arkib tag, gunakan tajuk istilah.
} elseif (is_category () || is_tag ()) {
$ title ['title'] = single_term_title (", false);
// Jika pada arkib pengarang, gunakan nama paparan pengarang.
} elseif (is_author () && $ author = get_queried_object ()) {
$ title ['title'] = $ author-> display_name;
/ / Jika arkib tarikh, gunakan tarikh sebagai tajuk.
} elseif (is_year ()) {
$ title ['title'] = get_the_date (_x ('Y', 'format tarikh arkib tahunan'));
} elseif (is_month ()) {
$ title ['title'] = get_the_date (_x ('F Y', 'format tarikh arkib bulanan'));
} elseif (is_day ()) {
$ title ['title'] = get_the_date ();
}
/ / Tambah nombor halaman jika perlu.
jika (($ paged> = 2 || $ page> = 2) &&! is_404 ()) {
$ title ['page'] = sprintf (__ ('Halaman% s'), maks ($ paged, $ halaman));
}
// Tambahkan penerangan atau tajuk laman untuk memberikan konteks.
jika (is_front_page ()) {
$ title ['tagline'] = get_bloginfo ('description', 'display');
} Lain {
$ title ['site'] = get_bloginfo ('name', 'display');
}
/ **
* Menapis pemisah untuk tajuk dokumen.
*
* @ dari 4.4.0
*
* @param string $ sep Pemisah tajuk dokumen. Lalai '-'.
*/
$ sep = apply_filters ('document_title_separator', '-');
/ **
* Menapis bahagian tajuk dokumen.
*
* @ dari 4.4.0
*
* @ array array $ title {
* Bahagian tajuk dokumen.
*
* @type string $ title Tajuk halaman yang dilihat.
* @type string $ page Opsional. Nombor halaman jika paginated.
* @type string $ tagline Pilihan. Penerangan tapak apabila di halaman rumah.
* @type string $ site Option. Tajuk tapak apabila tidak di halaman rumah.
*}
*/
$ title = apply_filters ('document_title_parts', $ title);
$ title = implode ("$ sep", array_filter ($ title));
$ title = wptexturize ($ title);
$ title = convert_chars ($ title);
$ title = esc_html ($ title);
$ title = capital_P_dangit ($ title);
kembali tajuk $;
}

Saya harap seseorang akan mendapati ini berguna kerana saya menghabiskan satu jam untuk mengetahui perubahan baru. Kebanyakan jawatan forum adalah ketinggalan zaman atau bercakap tentang mengubah suai fail teras. Oleh itu saya menulis jawatan blog cepat.

Source

Sila tinggalkan balasan anda

Laman web ini menggunakan Akismet untuk mengurangkan spam. Ketahui bagaimana data komen anda diproses.