web-dev-qa-db-ja.com

Wp_title()を呼び出すときには、ある種の "title.php"ファイルを作成する必要がありますか?

...またはwp_title()はすでにブログのさまざまなコンテキストを処理していますか?

与えられたコンテキスト内のさまざまなタイトルフォーマット(ページ、シングル、投稿、検索、アーカイブ、日付など)を処理するためのすべての条件付きステートメントを持たずに、再利用可能なindex.phpファイルを実現する方法

また、

他のユースケースを壊すことなく、特定の投稿またはページに特別なカスタムフォーマットを設定できますか。 ( これを別の質問にする必要がある場合は、お知らせください。この質問に密接に関連しているので、ここでマージします )。

2
bigp

wp_title()テンプレートタグ does some コンテキストベースの出力。コーデックスから:

タイトルテキストはクエリによって異なります。

単一の投稿またはページ

  • 投稿のタイトル(またはページ)

日付ベースのアーカイブ

  • 日付(例: "2006"、 "2006 - January")

カテゴリー

  • カテゴリの名前

作者ページ

  • ユーザーの公開名

より具体的なコンテキスト出力を追加する必要がある場合は、wp_title filter hook を使用して出力を変更できます。

たとえば、出力の先頭にサイト名を付けたい場合は、次のようにします。

<?php
function mytheme_filter_wp_title( $title ) {
    // Get the Site Name
    $site_name = get_bloginfo( 'name' );
    // Prepend it to the default output
    $filtered_title = $site_name . $title;
    // Return the modified title
    return $filtered_title;
}
// Hook into 'wp_title'
add_filter( 'wp_title', 'mytheme_filter_wp_title' );
?>

例としてコーデックスページから、サイトのフロントページにあるときにタイトル出力に サイトの説明 を追加したいとします。

<?php
function mytheme_filter_wp_title( $title ) {
    // Get the Site Name
    $site_name = get_bloginfo( 'name' );
    // Prepend name
    $filtered_title = $site_name . $title;
    // If site front page, append description
    if ( is_front_page() ) {
        // Get the Site Description
        $site_description = get_bloginfo( 'description' );
        // Append Site Description to title
        $filtered_title .= $site_description;
    }
    // Return the modified title
    return $filtered_title;
}
// Hook into 'wp_title'
add_filter( 'wp_title', 'mytheme_filter_wp_title' );
?>

必要に応じて変更してください。

明らかではない場合、これらのフィルタコールバックはfunctions.phpに属します。

編集

これを逃した:

他のユースケースを壊すことなく、特定の投稿またはページに特別なカスタムフォーマットを設定できますか。

それは完全に可能です。実際、ほとんどのSEOプラグインはこれで動作します。

wp_titleフィルタを使用してwp_title()の出力を制御する方法は、次のとおりです。SEOプラグインやwp_title() contentを変更しようとするその他の機能をうまく追加できるようになりました。追加のコード変更は不要です。

3
Chip Bennett

私が間違っている場合は訂正してください。しかし、コンディショナルを使わずにタイトルを「きれいに」する方法があるとは思いません。ページごとのタイトルについては、カスタムメタフィールドを作成し、タイトルを出力するときにその存在を確認することができます。

0
Joseph Leedy