simplicity 1.9.3でのtitleタグの順序変更ができない

Simplicityの特徴 フォーラム Simplicityについての質問 simplicity 1.9.3でのtitleタグの順序変更ができない

  • このトピックには7件の返信、2人の参加者があり、最後ににより2年、 8ヶ月前に更新されました。
7件の返信スレッドを表示中
  • 投稿者
    投稿
    • #35976
      hoshi
      ゲスト

      simplicityを初めて導入したものです。
      WordPress 4.4.1でsimplicity 1.9.3を使っています。
      titleタグで、デフォルトでは「ブログ名 | 説明」となっているものを
      「説明 | ブログ名」に変更したく、seo.phpをそのように変更したのですが
      反映されません。header-title-tag.phpも試しに変えてみたのですが
      そもそもWordPress4.1以上なので反映されるはずもなく。。。
      この解決法について何か知っている方はいませんか?
      よろしくお願いいたします。

      変更したseo.phpはこれです

      
      <?php //SEO関係の関数
      
      //Wordpress4.1からのタイトル自動作成
      function theme_slug_setup() {
         add_theme_support( 'title-tag' );
      }
      add_action( 'after_setup_theme', 'theme_slug_setup' );
      
      //タイトル自動作成をフックして変更したい部分を変更する
      if ( !function_exists( 'simplicity_wp_title' ) ):
      function simplicity_wp_title( $title ) {
        global $paged, $page;
      
        if ( is_feed() ) {
          return $title;
        }
      
        $site_name = trim( get_bloginfo('name') );
        if(is_front_page())://トップページのtitle
          $title = $site_name;
          if ( is_catch_phrase_to_frontpage_title() )://キャッチフレーズを追加する場合
             $title = trim( get_bloginfo('description') ). ' | ' .$title;
          endif;
        elseif(is_singular())://シングルページと固定ページのtitle
          $title = trim( get_the_title() ). ' | ' .$site_name;
          if ( is_site_name_to_singular_title() )://サイト名を追加する場合
              $title = $title. ' | ' .$site_name;
          endif;
        elseif(is_category())://カテゴリのtitle
          $title = single_cat_title( '', false ) .' | ' . $site_name;
        elseif(is_month())://月別アーカイブのtitle
          $title = get_query_var('year').'年'.get_query_var('monthnum').'月の一覧'. ' | ' .$site_name;
        // elseif(is_tag()):
        //   $title = single_tag_title( '', false ) .' | ' . $site_name;
        // elseif(is_archive()):
        //   if ( is_day() ):
        //     $title = get_the_time( get_theme_text_ymd_format() ). ' | ' . $site_name;
        //   elseif ( is_month() ):
        //     $title = get_the_time( get_theme_text_ym_format() ). ' | ' . $site_name;
        //   elseif ( is_year() ):
        //     $title = get_the_time( get_theme_text_y_format() ). ' | ' . $site_name;
        //   endif;
        elseif(is_search()):
          $title = get_search_query().'の検索結果'. ' | ' . $site_name;
          if(get_search_query() === ""):
            $title = '全てのページ'.' | '.$site_name;
          endif;
        // else:
        //   $title = $site_name;
        // endif;
        // if($paged >= 2 || $page >= 2):
        //   $title = $title . ' | '.sprintf('%s page',
        //   max($paged,$page));
        endif;
      
        return $title;
      }
      endif;
      //Wordpress4.4以上
      //add_filter( 'pre_get_document_title', 'simplicity_wp_title');
      //Wordpress4.4未満
      add_filter( 'wp_title', 'simplicity_wp_title');
      
      if ( !function_exists( 'simplicity_title_separator' ) ):
      function simplicity_title_separator( $sep ){
          $sep = ' | ';
          return $sep;
      }
      endif;
      add_filter( 'document_title_separator', 'simplicity_title_separator' );
      
      if ( !function_exists( 'simplicity_title_parts' ) ):
      function simplicity_title_parts( $title ){
        $site_name = trim( get_bloginfo('name') );
        $title['tagline'] = '';
        if(is_front_page()):
          $title['title'] = $site_name;
          $title['site'] = '';
          if ( is_catch_phrase_to_frontpage_title() )://キャッチフレーズを追加する場合
            $title['tagline'] = trim( get_bloginfo('description') );
          endif;
        elseif(is_singular()):
          $title['title'] = trim( get_the_title() );
          $title['site'] = '';
          if ( is_site_name_to_singular_title() )://サイト名を追加する場合
            $title['site'] = $site_name;
          endif;
        endif;
      
        return $title;
      }
      endif;
      add_filter( 'document_title_parts', 'simplicity_title_parts' );
      
      //デフォルトのrel="next"/"prev"を消す
      remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
      
      ////ページネーションと分割ページ(マルチページ)タグを出力
      function rel_next_prevlink_tags() {
        //1ページを複数に分けた分割ページ
        if(is_single() || is_page()) {
          global $wp_query;
          $multipage = check_multi_page();
          if($multipage[0] > 1) {
            $prev = generate_multipage_url('prev');
            $next = generate_multipage_url('next');
            if($prev) {
              echo '<link rel="prev" href="'.$prev.'" />'.PHP_EOL;
            }
            if($next) {
              echo '<link rel="next" href="'.$next.'" />'.PHP_EOL;
            }
          }
        } else{
          //トップページやカテゴリページなどの分割ページの設定
          global $paged;
          if ( get_previous_posts_link() ){
            echo '<link rel="prev" href="'.get_pagenum_link( $paged - 1 ).'" />'.PHP_EOL;
          }
          if ( get_next_posts_link() ){
            echo '<link rel="next" href="'.get_pagenum_link( $paged + 1 ).'" />'.PHP_EOL;
          }
        }
      }
      if ( is_rel_next_prev_link_enable() ) {
        //分割ページのみnext/prevを表示
        add_action( 'wp_head', 'rel_next_prevlink_tags' );
      }
      
      //分割ページ(マルチページ)URLの取得
      //参考ページ:
      //http://seophp.net/wordpress-fix-rel-prev-and-rel-next-without-plugin/
      function generate_multipage_url($rel='prev') {
        global $post;
        $url = '';
        $multipage = check_multi_page();
        if($multipage[0] > 1) {
          $numpages = $multipage[0];
          $page = $multipage[1] == 0 ? 1 : $multipage[1];
          $i = 'prev' == $rel? $page - 1: $page + 1;
          if($i && $i > 0 && $i <= $numpages) {
            if(1 == $i) {
              $url = get_permalink();
            } else {
              if ('' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending'))) {
                $url = add_query_arg('page', $i, get_permalink());
              } else {
                $url = trailingslashit(get_permalink()).user_trailingslashit($i, 'single_paged');
              }
            }
          }
        }
        return $url;
      }
      
      //分割ページ(マルチページ)かチェックする
      function check_multi_page() {
        $num_pages    = substr_count(
            $GLOBALS['post']->post_content,
            '<!--nextpage-->'
        ) + 1;
        $current_page = get_query_var( 'page' );
        return array ( $num_pages, $current_page );
      }
      
      //デフォルトのcanonicalタグ削除
      //remove_action('wp_head', 'rel_canonical');
      
      //canonical URLの生成
      function generate_canonical_url(){
        global $paged;
      
        //canonicalの疑問点
        //アーカイブはnoindexにしているけどcanonicalタグは必要か?
        //タグページはnoindexにしているけどcanonicalタグは必要か?
        //404ページはAll in One SEO Packはcanonicalタグを出力していないようだけど必要か?
        $canonical_url = home_url();
        if (is_home()) {
          $canonical_url = home_url();
        } elseif (is_category()) {
          $canonical_url = get_category_link(get_query_var('cat'));
        } elseif (is_page() || is_single()) {
          $canonical_url = get_permalink();
        // } elseif(is_404()) {
        //   $canonical_url =  home_url()."/404";
        }
      
        if ($canonical_url && ( $paged >= 2 || $page >= 2)) {
          $canonical_url = $canonical_url.'/page/'.max( $paged, $page ).'';
        }
      
        return $canonical_url;
      
      }
      
      //canonicalタグの取得
      //取得条件;http://bazubu.com/seo101/how-to-use-canonical
      function canonical_tag(){
        $canonical_url = generate_canonical_url();
        if ( $canonical_url ) {
          echo '<link rel="canonical" href="'.$canonical_url.'">'.PHP_EOL;
        }
      }
      
      if ( !function_exists( 'is_noindex_page' ) ):
      function is_noindex_page(){
        return (is_archive() && !is_category()) || //アーカイブページはインデックスに含めない
        is_tag() || //タグページをインデックスしたい場合はこの行を削除
        is_paged()  || //ページの2ページ目以降はインデックスに含めない(似たような内容の薄いコンテンツの除外)
        is_search() || //検索結果ページはインデックスに含めない
        is_attachment(); //添付ファイルページも含めない
      }
      endif;
      
    • #35977
      Hidekichi
      ゲスト

      all in one seoで 投稿タイトルのフォーマットを %post_title% | %blog_title% → %blog_title% | %post_title%に変更したら普通に変わりますよ。

      seo.phpを触っても変えられるはずですが、その場合はall in one seo等のタイトルタグを書き換えるプラグインの書き換え部分を停止しないといけないので、どっちかというとseo.phpを修正するより、プラグインで設定したほうが簡単で便利かと思います。

    • #35978
      Hidekichi
      ゲスト

      送信してもた。

      逆に、それらプラグインが作用しているせいで、変更したseo.phpが効かないということはないですかね?

    • #35979
      hoshi
      ゲスト

      現在、プラグインは入れていないのでそれはないかと思います。
      seo.phpをseo.php-bkとかにしてテストしてみたのですが、
      それでもタイトルは普通に出続けています。ということはseo.php自体読んでいないのかもしれません。

    • #35980
      hoshi
      ゲスト

      WordPressの方でタイトルが勝手に出るようになっていてその設定が優先されているとかありえますかね?

    • #35984
      アバター画像わいひら
      キーマスター

      Wordpress4.4以上使っている場合は、lib/seo.phpの以下の関数を子テーマのfunctions.phpでオーバーライドして書き直せばそのようにも出来るかもしれません。

      function simplicity_title_parts( $title ){
        $site_name = trim( get_bloginfo('name') );
        $title['tagline'] = '';
        if(is_front_page()):
          $title['title'] = $site_name;
          $title['site'] = '';
          if ( is_catch_phrase_to_frontpage_title() )://キャッチフレーズを追加する場合
            $title['tagline'] = trim( get_bloginfo('description') );
          endif;
        elseif(is_singular()):
          $title['title'] = trim( get_the_title() );
          $title['site'] = '';
          if ( is_site_name_to_singular_title() )://サイト名を追加する場合
            $title['site'] = $site_name;
          endif;
        endif;
      
        return $title;
      }

      ただ、Wordpress自体がタイトルをそのような順番で出力する仕様になっているので、書き直すのにちょっとした工夫は必要かもしれません。
      多分、if(is_front_page()):のところで$title['title']$title['tagline']に入れるあたりを入れ替えればいけると思うのですが、詳しくはdocument_title_partsフックのマニュアルを調べて、自前で書いていただけると助かります。

    • #35986
      hoshi
      ゲスト
      
      add_filter( 'pre_get_document_title', 'simplicity_wp_title');
      

      これを有効にしたら出来ました!!
      皆さん、ご回答ありがとうございます。
      そしてお騒がせしましたm(_ _)m

    • #35989
      Hidekichi
      ゲスト

      wp_head って do_actionしか書いてないんですよ。
      なので変更する時はフックしてねって感じなんです。

      wp-includes/genetal-templete.php

      /**
       * Fire the wp_head action
       *
       * @since 1.2.0
       */
      function wp_head() {
      	/**
      	 * Print scripts or data in the head tag on the front end.
      	 *
      	 * @since 1.5.0
      	 */
      	do_action( 'wp_head' );
      }
7件の返信スレッドを表示中
  • フォーラム「Simplicityについての質問」には新規投稿および返信を追加できません。
スポンサーリンク
アドセンス(大)
アドセンス(大)