雨過天晴

下層ページをカテゴリページで まとめ

2014.08.02

img from: pakutaso

この記事は2014年8月2日に書かれたものです。古い内容や非推奨要素を含む可能性がありますのでご注意ください。

会社のサイトを作っています。
とりあえず出来上がったので、忘れないようにあれこれを書いておこうかと。
先日「下層ページをカテゴリーページで済まそう」で書いた通り、下層ページはカテゴリーアーカイブをそのまま利用しています。
こんな感じ。

20140802


図の右側(メインコンテンツ)はcategory.phpでの通常のループです。
記事の頭に

<article id="<?php echo esc_attr( $post -> post_name ); ?>">

としてidに投稿スラッグ名を指定してアンカーしています。

図の左側(メニュー一覧)は先日の記事通り、リンク先を「#投稿スラッグ名」にした「投稿タイトル」を並べています。

<?php
      foreach((get_the_category()) as $cat) {
      $catid = $cat->cat_ID ;
      break ;
      }
      $get_posts_parm = "'numberposts=-1&nopaging=false&category=" . $catid . "'";
      ?>
      <ul>
      <?php $posts = get_posts($get_posts_parm); ?>
      <?php foreach($posts as $post): ?>
      <li><a href="#post-<?php the_ID(); ?>"><?php the_title(); ?></a></li>
      <?php endforeach; ?>
      </ul>

で、困ったのがカテゴリーアーカイブ以外の場所から「(たとえば)投稿その3」へリンクしている場合。
えっと…たとえば検索結果から投稿を見たい場合。
通常なら、そこから個別記事に飛ばなければならないのです。

もちろん、シングルページ(single.php)に飛ばせば済む話なのですが、いや待てよ、と。

それだと、シングルページから他投稿に移動するには一旦トップページに戻らなければならない…だって左側のサイドメニュー、

<a href="#投稿スラッグ名">

なんですもの。
そしてできることならシングルページを見せたくない。ブログ臭がするのを避けたいですから。

※あ、シングルページに直接アクセスされたら404ページに行っていただくことにしました。

検索結果からは、直接上記のカテゴリーアーカイブページ(の当該記事アンカー)に飛んでいただきましょう。パーマリンク設定にもよりますが、うちのは「#投稿スラッグ名」の前にカテゴリー名を出力すればいける形。

これまた先日の記事「テーマ作成時のカテゴリー周りの面倒2つ」でお世話になった

に再びお世話になりまして。

<?php
$cat = get_the_category(); //カテゴリ名取得
$cat = $cat[0];
$cat_nicename = $cat->category_nicename;
?>
<h2><a href="<?php echo home_url('/'); ?><?php echo $cat_nicename; ?>#<?php echo esc_attr( $post -> post_name ); ?>"><?php the_title(); ?></a></h2>

これで手間が減りそうです!