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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

977閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/03/20 09:39

編集2019/03/22 00:04

前提・実現したいこと

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

<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に記述しましたが、どちらとも変化はありませんでした。

php

1/////////////////////////////////////// 2// Wordpressデフォルトのnext/prev出力動作を停止 3/////////////////////////////////////// 4remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); 5 6/////////////////////////////////////// 7//ページネーション(一覧ページ)と分割ページ(マルチページ)タグを出力 8/////////////////////////////////////// 9function rel_next_prev_link_tags() { 10 if(is_single() || is_page()) { 11 //1ページを複数に分けた分割ページ(マルチページ)でのタグ出力 12 global $wp_query; 13 $multipage = check_multi_page(); 14 if($multipage[0] > 1) { 15 $prev = generate_multipage_url('prev'); 16 $next = generate_multipage_url('next'); 17 if($prev) { 18 echo '<link rel="prev" href="'.$prev.'" />'.PHP_EOL; 19 } 20 if($next) { 21 echo '<link rel="next" href="'.$next.'" />'.PHP_EOL; 22 } 23 } 24 } else{ 25 //トップページやカテゴリページなどのページネーションでのタグ出力 26 global $paged; 27 if ( get_previous_posts_link() ){ 28 echo '<link rel="prev" href="'.get_pagenum_link( $paged - 1 ).'" />'.PHP_EOL; 29 } 30 if ( get_next_posts_link() ){ 31 echo '<link rel="next" href="'.get_pagenum_link( $paged + 1 ).'" />'.PHP_EOL; 32 } 33 } 34} 35//適切なページのヘッダーにnext/prevを表示 36add_action( 'wp_head', 'rel_next_prev_link_tags' ); 37 38//分割ページ(マルチページ)URLの取得 39//参考ページ:http://seophp.net/wordpress-fix-rel-prev-and-rel-next-without-plugin/ 40function generate_multipage_url($rel='prev') { 41 global $post; 42 $url = ''; 43 $multipage = check_multi_page(); 44 if($multipage[0] > 1) { 45 $numpages = $multipage[0]; 46 $page = $multipage[1] == 0 ? 1 : $multipage[1]; 47 $i = 'prev' == $rel? $page - 1: $page + 1; 48 if($i && $i > 0 && $i <= $numpages) { 49 if(1 == $i) { 50 $url = get_permalink(); 51 } else { 52 if ('' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending'))) { 53 $url = add_query_arg('page', $i, get_permalink()); 54 } else { 55 $url = trailingslashit(get_permalink()).user_trailingslashit($i, 'single_paged'); 56 } 57 } 58 } 59 } 60 return $url; 61} 62 63//分割ページ(マルチページ)かチェックする 64function check_multi_page() { 65 $num_pages = substr_count( 66 $GLOBALS['post']->post_content, 67 '<!--nextpage-->' 68 ) + 1; 69 $current_page = get_query_var( 'page' ); 70 return array ( $num_pages, $current_page ); 71}

php

1function ozLinkRelPrevNext(){ 2 global $paged; 3 if( is_archive() ) { 4 if ( get_previous_posts_link() ) { 5 echo "<link rel='prev' href=".get_pagenum_link( $paged-1 )." />"."\n"; 6 } 7 if ( get_next_posts_link() ) { 8 echo "<link rel='next' href=".get_pagenum_link( $paged+1 )." />"."\n"; 9 } 10 } 11} 12add_action('wp_head', 'ozLinkRelPrevNext');

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/03/20 09:45

WordPress であれば、質問のタグに WordPress を入れておいてください。
退会済みユーザー

退会済みユーザー

2019/03/20 09:51

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

2019/03/20 10:00

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問