サポート » 使い方全般 » singleページのタイトルを変えたい

  • phpの勉強不足なもので、どなたか教えて頂きたいのですが、

    現在、シングルページを「 シングルページのタイトル|ブログタイトル」としていますが、(下記参照)
    <title><?php ftw_title(); ?><?php if(!is_home()) { echo ‘ | ‘ . get_bloginfo(‘name’); } ?></title>

    homeは、ブログタイトルのみ、singleページは、シングルページのタイトルのみにしたいのですが、どのようにすればいいのでしょうか。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • ftw_title はこれですね。

    WordPressのタイトルをページごとに違うものにする

    function ftw_title() {
        global $s;
        if (is_home()) {
            bloginfo('name');
        } elseif (is_year()) {
            the_time('Y年');
        } elseif (is_month()) {
            the_time('Y年n月');
        } elseif (is_day()) {
            the_time('j日');
        } elseif (is_tag()) {
            wp_title('');
        } elseif (is_search()){
            echo ''' . $s . ''' . ' の検索結果';
        } elseif (is_404()) {
            echo '404 Not Found';
        } else {
            wp_title('');
        }
    }

    とすると、| から左だけにするだけで良いような気がするので、

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

    これだけで良いと思います。
    要望と違う表示になる場合は、具体的にその旨記載して下さい。

    こんにちは

    フィルタフックを使うといいと思います。

    WordPressのタイトルに関しては、wp_title()関数を使い、カスタマイズは、フィルタを使う事が、推奨されていたと思います。

    別に、オリジナル関数を使って直ぐに何か問題が起こるわけではありませんが、他のプラグインなどが、フックを利用する事を考慮するという意味だと思います。

    functions.phpに

    add_filter( 'wp_title', 'my_extend_title' );
    function my_extend_title( $title ){
    	global $post;
    	if( is_singular() ){
    		return get_the_title( $post->ID );
    	}
    	if( is_front_page() ){
    		return get_bloginfo();
    	}
    	return $title;
    }

    等としても、実現できるんじゃないかと思います

    is_home()の代わりに、is_front_page()を使いましたが、固定ページテンプレートをフロント用に使った場合などで、挙動が違ったと思いますので、テストしてみてください。

    is_singular()は、固定ページを含んだシングルページです。投稿だけなら、is_single()でいいと思います。

    header.php

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

    はじめまして。

    上記の方法でwp_title()関数をフックして日付を

    <title>2014年XX月|<自ブログ名></title>

    と表記しようとしたのですが、

    <title>2014年XX月<自ブログ名></title>

    と表記されてしまいます。
    その時に書いたコードは、

    add_filter( 'wp_title', 'my_extend_title' );
    function my_extend_title( $title ){
    
    	if( is_month() ){
    		return get_the_date( 'Y年n月' );
    	}
    	return $title;
    }

    でした。

    これを

    <title>2014年XX月|<自ブログ名></title>

    のように表記するようにフックするには、どのようにすればいいのでしょうか。
    よろしくお願いします。

    お使いのテンプレートで <title>...</title> のところはどうなっていますか?

    現在使っているテンプレートでは、

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

    と書いてあり、function.phpをフックしない場合は、

    <title>XX月 | 2014年 | <ブログ名></title>

    と表示されます。

    ブログ名は必ずつくんですね。テーマを聞き忘れちゃいましたが、下のようにすると、どうでしょう?

    add_filter( 'wp_title', 'my_extend_title', 10, 2 );
    function my_extend_title( $title, $sep ) {
        if( is_month() ){
            $title = get_the_date( 'Y年n月' ) . $sep;
        }
        return $title;
    }

    >テーマ
    こちらからダウンロードした学習用のものを使っています。

    はじめてWordPressのオリジナルテーマを作るときの参考になればと思って書きました(サンプルダウンロード)

    本番では別のテーマを使うか、もしくは自作を考えています。

    先ほどのコードを試したところ、空白が入っていなかったので、それを入れるよう若干修正を加えました。

    add_filter( 'wp_title', 'my_extend_title', 10, 2 );
    function my_extend_title( $title, $sep ) {
        if( is_month() ){
            $title = get_the_date( 'Y年n月' ) . ' ' . $sep. ' ';
        }
        return $title;
    }

    これで試しに月別アーカイブを表示させると、

    <title>2014年XX月 | <ブログ名></title>

    と表示されました。

    但し、デフォルトで追加されるテンプレート(twenty twelve,twenty thirteen, twenty fourteen)では、

    <title><ブログ名>2014年XX月 | </title>

    と表示されるので、デフォルトで追加されるテーマでは子テーマを使ってheader.phpの処理を変更して対応してみます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「singleページのタイトルを変えたい」には新たに返信することはできません。