記事投稿の際、<!--more-->ではなく<!--nextpage-->を使う機会が多いのですが、ウェブマスターから重複タイトルと重複descriptionで指摘を受けました。プラグインのheadspaceでいろいろ操作しても解消できなかったので他の対処方法をアドバイスいただけると幸いです。
HeadSpaceによる出力は行われない事が前提条件になります。
問題が検出される種類(※投稿なら「Posts」)の「ページタイトル」と「Description(説明文)」の欄は空欄にして置いてください。
※各投稿の編集画面でも設定をしないようにしてください。
まずはメタディスクリプションを出力する為に、次のコードを「functions.php」に追加します。(※分割されたページごとに投稿本文を抜き出してメタディスクリプションに設定します。)
function descs_for_posts() { if( !is_admin() && is_single() ) { global $post, $page; // タイトルや更新日も含める場合は、以下の2行を有効にして連結するなどして整形します。 // $title = $post->post_title; // $date = $post->post_date; $content = $post->post_content; if( false !== strpos( $content, '<!--nextpage-->' ) ) { $num = $page ? $page - 1 : 0; $split_contents = explode( '<!--nextpage-->', $content ); $content = $split_contents[$num]; } // 次行で文字数を制限しています。任意の数値に変更してください。 $desc = mb_substr( strip_tags( $content ), 0, 140 ); $desc = preg_replace( '/\n/', '', $desc ); echo '<meta name="description" content="' . $desc . "\" />\n"; } } add_action( 'wp_head', 'descs_for_posts' );
・投稿記事一覧で文字数を制限して表示
http://crushpow.com/archives/491.html
タイトルについてですが、利用しているテーマの「header.php」の記述はどうなっているでしょう?
HeadSpaceによる出力ではなく、テーマによる出力で重複は解消しているかもしれませんので確認してみてください。
WordPressデフォルトのテーマ「Twenty_Eleven」および「Twenty_Ten」では次のようにしてアーカイブや分割された投稿ページで2ページ目以降のタイトルにページ数を付加しています。
<title><?php /* * Print the <title> tag based on what is being viewed. */ global $page, $paged; wp_title( '|', true, 'right' ); // Add the blog name. bloginfo( 'name' ); // Add the blog description for the home/front page. $site_description = get_bloginfo( 'description', 'display' ); if ( $site_description && ( is_home() || is_front_page() ) ) echo " | $site_description"; // Add a page number if necessary: if ( $paged >= 2 || $page >= 2 ) echo ' | ' . sprintf( __( 'Page %s', 'twentyeleven' ), max( $paged, $page ) ); ?></title>
※「Twenty Thirteen」および「Twenty Twelve」では次のようになっていますが、「functions.php」で同様の処理をして変更している為、同様にページ数が付加されます。
<title><?php wp_title( '|', true, 'right' ); ?></title>
もし利用しているテーマでページ数が付加されたタイトル表示になっていない場合は、上記のようなタイトルタグの出力箇所を次のコードに変更してみてください。
<title><?php /* * Print the <title> tag based on what is being viewed. */ global $page, $paged; wp_title( '|', true, 'right' ); // Add the blog name. bloginfo( 'name' ); // Add the blog description for the home/front page. $site_description = get_bloginfo( 'description', 'display' ); if ( $site_description && ( is_home() || is_front_page() ) ) echo " | $site_description"; // Add a page number if necessary: if ( $paged >= 2 || $page >= 2 ) echo ' | ' . sprintf( 'Page %s', max( $paged, $page ) ); ?></title>
※デフォルトのテーマの記述をほぼそのまま利用しています。(ページの表記でテーマの言語ファイルを利用しますが、言語ファイルを利用しない記述に変更しています。)
rouge_2008さんいつも大変ありがとうございます。
2013/12/02 22:40:37ほんとうにわかりやすく、また詳しく、PHPを最近勉強している私にとってものすごいためになります。
今週はドタバタしていて週末あたりにゆっくりとスクリプトをみながら構築してみたいと思います。
結果についてはこちらのコメについきいたします。
ありがとうございました。
かなり遅くなりましたが、重複タイトル解消いたしました。
2014/05/12 12:30:01誠にありがとうございました!
恐れ入ります。
descriptionに関しては、functionに記述するだけでよい、という訳ではないという認識でよろしいでしょうか。