前提・実現したいこと
開発会社にオウンドメディア兼サービスサイトを制作してもらったのですが、
ページネーションされたカテゴリアーカイブページにて
<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');
あなたの回答
tips
プレビュー