2017年9月7日木曜日

カテゴリページが表示されない原因は??


カテゴリページは「category.php」で”if文”振り分け。


if (is_category('sample')){

include(TEMPLATEPATH . '/category-sample.php');

}


みたいな感じで。

当然普通の投稿も同じくやってました。

商品カテゴリ表示がすんでから改めて、というか何の気なしにすでにつくってあった他のカテゴリを見てみると、ヘッダー、フッター以外真っ白のブラウザ。


あ??


固まりましたね。

まずは原因の究明から。

ページのソースを見てみると、今まで動いていた、商品カテゴリページでも動く、


<?php

$cats = get_the_category();

$cats = $cats[0];

?>

が効かなくなっていました。

ボックス(div)のクラスにカテゴリを当てはめる為、皆さんやっているように


<div class="<?php echo $cats->category_nicename; ?>-category-page">

みたく、はめ込んでいたのですが、出力結果は

<div class="-category-page">



同じコード、テンプレートタグで一方は正しく表示、他方は反応なし。ということなので勢い疑ってしまいます。

まぁ、それはそれとして一般投稿も表示させねばならないのでまずはカテゴリのスラッグを何としてもechoしなければなりません。

さんざ探し回って、やっとたどり着いてのが

CAT SPEAKさん
http://cat-speak.net/2011/05/06/75/

こちらのコードをいただいて

<?php
$cat = get_category( $cat);
$parentCat = $cat->parent;
var_dump($parentCat);
$catName = $cat->name;
var_dump($catName);
?>

親カテゴリは不要なのでこんな感じにしました。
<?php
$cat = get_category( $cat);
$catName = $cat->category_nicename;
?>


これでカテゴリスラッグだけ取り出して、

<div class="<?php echo $catName; ?>-category-page">

としたところ、希望通りの結果が得られました。

ところが、これはタイトルやボックスの背景スタイルなどを決めるだけで、肝心の投稿記事が表示されてません。


でももう安心。


カテゴリスラッグが取れたので

<?php if(is_category('sample-1')): ?>
<?php query_posts('category_name=sample-1'); ?>

<?php elseif(is_category('sample-2')): ?>
<?php query_posts('category_name=sample-2'); ?>
<? endif; ?>


みたく振り分けるつもりです。


まだやってないので何ともですが、不具合発見当時の落胆からすれば、現在はかなり希望があります。


★追記

さっそく、複数のカテゴリで振り分けてみたところ、大成功ですた。

あと、店舗紹介と人材募集のセクションにも適用する予定です。


★追記2

一通りの改修が終了。
今回の改修はおもにbreadcrumb NavXTで生成されたカテゴリページへのリンク先なので、投稿記事の取得は本来

query_post('category_name=******')

でカテゴリを指定しなくてもいいはずですが、カテゴリ関連の情報がうまく伝わらなくなったのでしょうか。

Word Pressは同じ情報をいろいろなやり方で取れるのですね。






あぁ~。
よかった。
でも。
なおって。
















0 件のコメント: