当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「テンプレートタグ/wp title」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(2.5: seplocation パラメータを追加)
(残りを和訳。原文リンクを本家の Code Reference へ変更。)
 
(2人の利用者による、間の6版が非表示)
3行目: 3行目:
 
</div>
 
</div>
  
このテンプレートタグ '''<code>wp_title()</code>''' は、現在のページのタイトルを表示、または取得します。区切り文字を定義でき、[[Version 2.5|WordPress 2.5]] 以上では、タイトルの前/後どちらに出力するかを指定できます。
+
現在のページのタイトルを表示または取得します。
  
このタグは、メインページの[[:ja:The Loop|ループ]]の外側であれば、テンプレートのどこででも使えますが、主に、ウェブページ <code><nowiki><head></nowiki></code> 内の <code><nowiki><title></nowiki></code> 要素で使われます。
+
デフォルトではページタイトルの前にセパレーターを表示するので、ブログタイトルの後にページタイトルが続きます。これだと Web ブラウザーのほとんどのタブにブログタイトルが表示されてしまうので、ユーザーが見るページタイトルとしては適切ではありません。
  
クエリに基づいたタイトル文字列:
+
ブログタイトルをページタイトルの後(または「右」)に表示するのは SEO にとっても有効です。しかしタブをサポートするほとんどのブラウザーにとって右にブログタイトルを表示するのは常識といってよいでしょう。そうするには $seplocation パラメータを使って 'right' を指定します。これは [[Version 2.5|WordPress 2.5]] で行われた変更で、テーマの後方互換性のために重要です。
; 単体記事/[[:ja:Pages|WordPressページ]] : 記事/ページタイトル
+
; 日付ベースのアーカイブ : 日付 (例: "2006", "2006 - January")
+
; カテゴリ : カテゴリ名
+
  
 
<div id="Usage">
 
<div id="Usage">
16行目: 13行目:
 
</div>
 
</div>
  
  <?php wp_title('sep', echo, 'seplocation'); ?>
+
  <?php wp_title( $sep, $display, $seplocation ); ?>
<!-- 中央の引数 echo は、関数のコード上は display のままだが、Codex 原文に合わせて echo とした。 -->
+
  
<div id="Examples">
+
<div id="Return_Values">
== 用例 ==
+
== 戻り値 ==
 
</div>
 
</div>
  
<div id="Default_Usage">
+
{{Return||文字列/null|取得した文字列。表示した時は null。}}
=== 初期設定での使用 ===
+
 
 +
この関数は連結された文字列を返します。デフォルトの文字列を毎回データベースへ照会します。デフォルトの文字列は投稿やページのタイプによって異なります:
 +
 
 +
; ひとつの投稿/[[:ja:Pages|固定ページ]] : 投稿/ページのタイトル
 +
; 日付ベースのアーカイブ : 日付(例:"2006", "2006 - January")
 +
; カテゴリー : カテゴリー名
 +
; 著者ページ : [[Users Your Profile SubPanel#name|ユーザの公開名]]
 +
 
 +
$sep 文字列をデフォルトの文字列の先頭または末尾へ追加して全体の値を返します。
 +
 
 +
<div id="Parameters">
 +
== パラメータ ==
 
</div>
 
</div>
  
デフォルトのまま用いて、ブログ名([[Template Tags/bloginfo|<tt>bloginfo()</tt>]] 使用)とページのタイトルを表示する例です。単体記事ページでの表示結果は「ブログ名 &raquo; 記事タイトル」となります。
+
{{Parameter|$sep|文字列|ページタイトルに含める項目の区切り文字。|オプション|'&amp;raquo;'}}
<pre><title><?php bloginfo('name'); ?> <?php wp_title(); ?></title></pre>
+
  
次の例も全く同じ事を行ないます。
+
{{Parameter|$display|真偽値|タイトルを表示する(true)か、PHP 文字列として使えるようにタイトルの値を返す(false)か。|オプション|true}}
<pre><title><?php bloginfo('name'); ?> <?php wp_title('',true,''); ?></title></pre>
+
  
<div id="Using_Separator">
+
{{Parameter|$seplocation|文字列|$sep 文字列を表示する位置。<code>'right'</code> ならタイトルの右(後)に、そうでなければ左(前)に $sep を表示する。|オプション|<code><nowiki>''</nowiki></code> &mdash; $sep を左(前)に表示。}}
=== 区切り文字の使用 ===
+
 
 +
<div id="Examples">
 +
== 用例 ==
 
</div>
 
</div>
  
区切り文字として "--" を用いて、ブログ名([[テンプレートタグ/bloginfo|<code>bloginfo()</code>]] 使用)とページのタイトルをウェブページの <code><nowiki><title></nowiki></code> タグに表示。表示結果は、単体記事ページであれば '''ブログ名--記事タイトル''' となります。
+
=== 初期設定での使用 ===
  
  <title><?php bloginfo('name'); ?><?php wp_title('--'); ?></title>
+
例えば次のように単一投稿についてパラメーターを何も指定せず呼び出す場合:
 +
 
 +
  <title><?php wp_title(); ?></title>
 +
 
 +
投稿タイトルが「Hello world!」なら、この関数は次の文字列を表示します:
 +
 
 +
&raquo; Hello world!
  
 
<div id="Separator_with_Blog_Name_and_Title_Reversed">
 
<div id="Separator_with_Blog_Name_and_Title_Reversed">
45行目: 58行目:
 
</div>
 
</div>
  
<code><nowiki><title></nowiki></code> タグのページタイトルとブログ名を、上の例とは逆さにする例です('''記事タイトル--ブログ名''')。<code>wp_title()</code> からは区切り文字を除き、<code>wp_title()</code> に値があるか判定、値があれば <code>bloginfo()</code> との間に区切り文字を表示します。
+
第3パラメータ $seplocation を使って、タイトルの右側にセパレータ(<code>--</code>)を表示させます。
  
<title>
+
<pre>
<?php wp_title(' '); ?>
+
<title>
<?php if(wp_title(' ', false)) { echo '--'; } ?>  
+
<?php wp_title( '--', true, 'right' ); ?>
<?php bloginfo('name'); ?>
+
<?php bloginfo( 'name' ); ?>
</title>
+
</title>
 +
</pre>
 +
 +
=== $sep が空文字列の場合 ===
  
<div id="Parameters">
+
$sep は空文字列でも構いません。そうすると結果から '''&raquo;''' が削除されます。これは例えば次のように指定します:
== パラメータ ==
+
</div>
+
  
; sep
+
<title><?php wp_title( <nowiki>''</nowiki> ); ?></title>
: (''文字列'') タイトルの前/後に表示するテキスト、すなわち、セパレータ(区切り文字)。デフォルト(sep がブランク)では、記事タイトルの前または後ろ('''seplocation''' 指定による)に <code>'&amp;raquo;'</code>(&raquo;)記号を置きます。
+
 
; echo
+
投稿タイトルが「Hello world!」なら、この関数は次の文字列を表示します:
: (''真偽値'') タイトルを表示する(True)か、PHP 文字列として使えるようにタイトルの値を返す(False)か。有効値:
+
 
:*<code>1</code> (True) - (初期値) 表示
+
Hello world!
:*<code>0</code> (False) - 値を返す
+
 
; seplocation
+
=== フィルターによるカスタマイズ ===
: (''文字列'')タイトルに対する '''sep''' 文字列の出力位置を指定します。この値を <code>'right'</code> とすると、'''sep''' 文字列を記事タイトルの後ろ(右側)に置きます。初期値 <code><nowiki>''</nowiki></code>(ブランク)や、<code>'right'</code> 以外の値では、'''sep''' 文字列をタイトルの直前(左側)に置きます。このパラメータは [[Version 2.5]] 以上でのみ使えます。
+
 
:* <code>'right'</code> - 区切り文字を後ろ(右)に表示
+
ページによってタイトルの表示形式を変えたいならフィルターを利用できます。
:* <code><nowiki>''</nowiki></code>(初期値)・その他の文字列 - 区切り文字を前(左)に表示
+
 
 +
<pre>
 +
/**
 +
* Filters wp_title to print a neat <title> tag based on what is being viewed.
 +
*
 +
* @param string $title Default title text for current view.
 +
* @param string $sep  Optional separator.
 +
* @return string The filtered title.
 +
*/
 +
function wpdocs_theme_name_wp_title( $title, $sep ) {
 +
    if ( is_feed() ) {
 +
        return $title;
 +
    }
 +
   
 +
    global $page, $paged;
 +
 +
    // Add the blog name
 +
    $title .= get_bloginfo( 'name', 'display' );
 +
 +
    // Add the blog description for the home/front page.
 +
    $site_description = get_bloginfo( 'description', 'display' );
 +
    if ( $site_description && ( is_home() || is_front_page() ) ) {
 +
        $title .= " $sep $site_description";
 +
    }
 +
 +
    // Add a page number if necessary:
 +
    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
 +
        $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) );
 +
    }
 +
    return $title;
 +
}
 +
add_filter( 'wp_title', 'wpdocs_theme_name_wp_title', 10, 2 );
 +
</pre>
 +
 
 +
=== ホームページに対応させる ===
 +
 
 +
カスタムループなどを含むカスタムホームページ、またはカスタムフロントページを使っている場合は、wp_title が空になります。こうしたホームページの wp_title にブログの説明やタグラインを追加するうまいハックは次のようになります。まず次のように wp_title を記述します:
 +
 
 +
<title><?php wp_title( <nowiki>''</nowiki> ); ?></title>
 +
 
 +
そしてテーマの functions.php ファイルに次のようなコードを含めます:
 +
 
 +
<pre>
 +
add_filter( 'wp_title', 'wpdocs_hack_wp_title_for_home' );
 +
 +
/**
 +
* Customize the title for the home page, if one is not set.
 +
*
 +
* @param string $title The original title.
 +
* @return string The title to use.
 +
*/
 +
function wpdocs_hack_wp_title_for_home( $title )
 +
{
 +
  if ( empty( $title ) && ( is_home() || is_front_page() ) ) {
 +
    $title = __( 'Home', 'textdomain' ) . ' | ' . get_bloginfo( 'description' );
 +
  }
 +
  return $title;
 +
}
 +
</pre>
 +
もちろん自分の好きなようにこの文字列の書式を設定することができます。
  
 
== 変更履歴 ==
 
== 変更履歴 ==
  
* [[Version 2.5|2.5]] : パラメータに seplocation を追加
+
* [[Version 1.0|1.0.0]]:新規導入
 +
* [[Version 2.5|2.5]] : パラメータに $seplocation が追加されました。「記事タイトル &laquo; ブログ名」のような反転表記がしやすくなりました([[#Separator_with_Blog_Name_and_Title_Reversed|用例]])。
 +
 
 +
== ソースファイル ==
 +
 
 +
<code>wp_title()</code> は {{Trac|wp-includes/general-template.php}} にあります。
  
 
<div id="Related">
 
<div id="Related">
== 関連 ==
+
== 関連項目 ==
 
</div>
 
</div>
  
80行目: 158行目:
 
{{PHP Function Tag Footer}}
 
{{PHP Function Tag Footer}}
  
{{原文|Template Tags/wp_title}}
+
最新英語版: [https://developer.wordpress.org/reference/functions/wp_title/ Code Reference / Functions / wp_title()] <!-- 2015年12月30日 -->
  
{{DEFAULTSORT:wp_title}}
+
{{DEFAULTSORT:Wp_title}}
 
[[Category:wp2.5]]
 
[[Category:wp2.5]]
  
 
[[en:Template Tags/wp_title]]
 
[[en:Template Tags/wp_title]]

2015年12月30日 (水) 23:47時点における最新版

現在のページのタイトルを表示または取得します。

デフォルトではページタイトルの前にセパレーターを表示するので、ブログタイトルの後にページタイトルが続きます。これだと Web ブラウザーのほとんどのタブにブログタイトルが表示されてしまうので、ユーザーが見るページタイトルとしては適切ではありません。

ブログタイトルをページタイトルの後(または「右」)に表示するのは SEO にとっても有効です。しかしタブをサポートするほとんどのブラウザーにとって右にブログタイトルを表示するのは常識といってよいでしょう。そうするには $seplocation パラメータを使って 'right' を指定します。これは WordPress 2.5 で行われた変更で、テーマの後方互換性のために重要です。

使い方

<?php wp_title( $sep, $display, $seplocation ); ?>

戻り値

(文字列/null) 
取得した文字列。表示した時は null。

この関数は連結された文字列を返します。デフォルトの文字列を毎回データベースへ照会します。デフォルトの文字列は投稿やページのタイプによって異なります:

ひとつの投稿/固定ページ 
投稿/ページのタイトル
日付ベースのアーカイブ 
日付(例:"2006", "2006 - January")
カテゴリー 
カテゴリー名
著者ページ 
ユーザの公開名

$sep 文字列をデフォルトの文字列の先頭または末尾へ追加して全体の値を返します。

パラメータ

$sep
文字列) (オプション) ページタイトルに含める項目の区切り文字。
初期値: '&raquo;'
$display
真偽値) (オプション) タイトルを表示する(true)か、PHP 文字列として使えるようにタイトルの値を返す(false)か。
初期値: true
$seplocation
文字列) (オプション) $sep 文字列を表示する位置。'right' ならタイトルの右(後)に、そうでなければ左(前)に $sep を表示する。
初期値: '' — $sep を左(前)に表示。

用例

初期設定での使用

例えば次のように単一投稿についてパラメーターを何も指定せず呼び出す場合:

<title><?php wp_title(); ?></title>

投稿タイトルが「Hello world!」なら、この関数は次の文字列を表示します:

» Hello world!

ブログ名とタイトルを反転して区切る

第3パラメータ $seplocation を使って、タイトルの右側にセパレータ(--)を表示させます。

<title>
<?php wp_title( '--', true, 'right' ); ?>
<?php bloginfo( 'name' ); ?>
</title>

$sep が空文字列の場合

$sep は空文字列でも構いません。そうすると結果から » が削除されます。これは例えば次のように指定します:

<title><?php wp_title( '' ); ?></title>

投稿タイトルが「Hello world!」なら、この関数は次の文字列を表示します:

Hello world!

フィルターによるカスタマイズ

ページによってタイトルの表示形式を変えたいならフィルターを利用できます。

/**
 * Filters wp_title to print a neat <title> tag based on what is being viewed.
 *
 * @param string $title Default title text for current view.
 * @param string $sep   Optional separator.
 * @return string The filtered title.
 */
function wpdocs_theme_name_wp_title( $title, $sep ) {
    if ( is_feed() ) {
        return $title;
    }
     
    global $page, $paged;
 
    // Add the blog name
    $title .= get_bloginfo( 'name', 'display' );
 
    // Add the blog description for the home/front page.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) ) {
        $title .= " $sep $site_description";
    }
 
    // Add a page number if necessary:
    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
        $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) );
    }
    return $title;
}
add_filter( 'wp_title', 'wpdocs_theme_name_wp_title', 10, 2 );

ホームページに対応させる

カスタムループなどを含むカスタムホームページ、またはカスタムフロントページを使っている場合は、wp_title が空になります。こうしたホームページの wp_title にブログの説明やタグラインを追加するうまいハックは次のようになります。まず次のように wp_title を記述します:

<title><?php wp_title( '' ); ?></title>

そしてテーマの functions.php ファイルに次のようなコードを含めます:

add_filter( 'wp_title', 'wpdocs_hack_wp_title_for_home' );
 
/**
 * Customize the title for the home page, if one is not set.
 *
 * @param string $title The original title.
 * @return string The title to use.
 */
function wpdocs_hack_wp_title_for_home( $title )
{
  if ( empty( $title ) && ( is_home() || is_front_page() ) ) {
    $title = __( 'Home', 'textdomain' ) . ' | ' . get_bloginfo( 'description' );
  }
  return $title;
}

もちろん自分の好きなようにこの文字列の書式を設定することができます。

変更履歴

  • 1.0.0:新規導入
  • 2.5 : パラメータに $seplocation が追加されました。「記事タイトル « ブログ名」のような反転表記がしやすくなりました(用例)。

ソースファイル

wp_title()wp-includes/general-template.php にあります。


記事

コードドキュメンテーション

  • クラス: WP_Query - WP_Query クエリの詳細概要
  • オブジェクト: $wpdb - $wpdb オブジェクトの使い方概要
  • 関数: get_query_var()
  • 関数: query_posts() - 追加カスタムクエリの作成
  • 関数: get_post() - 項目の ID を使ってその投稿のレコードをデータベースから取得する
  • 関数: get_posts() - 項目の配列を返す特別な関数。
  • 関数: get_pages() - ページの配列を返す特別な関数。
  • 関数: have posts() - クエリが記事を返すかどうか判断する条件分岐。
  • 関数: the_post() - クエリの後に自動的にループを設定するのに使われる。
  • 関数: rewind_posts() - 現在のループをクリアする。
  • 関数: setup_postdata() - ループ内で単一クエリ結果のデータを設定する。
  • 関数: wp_reset_postdata() - 以前のクエリを復元する(通常、ループ内のもう一つのループで使われる)。
  • 関数: wp_reset_query()
  • 関数: is_main_query() - 変更するのがメインクエリであるよう保証する。
  • アクションフック: pre_get_posts - 実行される前に WordPress クエリを変更する。
  • アクションフック: the_post - 投稿オブジェクトをクエリの後に変更する。
  • フィルターフック: found_posts - found_posts WP_Query オブジェクトの値を変更する


関連

固定ページ: get_all_page_ids(), get_ancestors(), get_page_link(), get_page_by_path(), get_page_by_title(), get_page_children(), get_page_hierarchy(), get_page_uri() /en, get_pages(), is_page(), page_uri_index() /en, wp_list_pages(), wp_page_menu()


リスト・ドロップダウン関数: wp_list_authors(), wp_list_categories(), wp_list_pages(), wp_list_bookmarks(), wp_list_comments(), wp_get_archives(), wp_page_menu(), wp_dropdown_pages(), wp_dropdown_categories(), wp_dropdown_users()


テンプレートタグへの PHP 関数型パラメータの渡し方関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: Code Reference / Functions / wp_title()