質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.20%

link rel="prev" "next"の自動出力について

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 475
退会済みユーザー

退会済みユーザー

前提・実現したいこと

開発会社にオウンドメディア兼サービスサイトを制作してもらったのですが、
ページネーションされたカテゴリアーカイブページにて

<link rel="prev" href="https://hoge/page/2/">
<link rel="next" href="https://hoge/page/4/">


などの、link rel="prev"/"next"が自動挿入されません。

制作会社の方がかなりマニアックな構造にされたようで、
自動でlink rel="prev"/"next"が入らなくなったようです。

解決策や心当たりがございましたら、ご教授願います。

試したこと

以下の2種類のコードをfunctions.phpに記述しましたが、どちらとも変化はありませんでした。

///////////////////////////////////////
// Wordpressデフォルトのnext/prev出力動作を停止
///////////////////////////////////////
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

///////////////////////////////////////
//ページネーション(一覧ページ)と分割ページ(マルチページ)タグを出力
///////////////////////////////////////
function rel_next_prev_link_tags() {
  if(is_single() || is_page()) {
      //1ページを複数に分けた分割ページ(マルチページ)でのタグ出力
    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;
    }
  }
}
//適切なページのヘッダーにnext/prevを表示
add_action( 'wp_head', 'rel_next_prev_link_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 );
}
function ozLinkRelPrevNext(){
  global $paged;
  if( is_archive() ) {
    if ( get_previous_posts_link() ) {
      echo "<link rel='prev' href=".get_pagenum_link( $paged-1 )." />"."\n";
    }
    if ( get_next_posts_link() ) {
      echo "<link rel='next' href=".get_pagenum_link( $paged+1 )." />"."\n";
    }
  }
}
add_action('wp_head', 'ozLinkRelPrevNext');
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • CHERRY

    2019/03/20 18:45

    WordPress であれば、質問のタグに WordPress を入れておいてください。

    キャンセル

  • m6u

    2019/03/20 18:51

    製作元に追加発注すればいいじゃない、いちばん詳しいんだから。

    キャンセル

  • m.ts10806

    2019/03/20 19:00

    hrefのダブルクォーテーション閉じてませんけど、それは関係ないですか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.20%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る