こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WordpressでテンプレにIDを表示できない…

現在、初めてWordpressのテンプレートを作っています。

そこで、カスタマイズ方法についてお伺いさせてください。

行いたいこととしては、特定のIDの場合、特定の文言を表示というシンプルなカスタマイズです。
対象としているページは単一記事の投稿(single.php)です。

今回仮にカテゴリIDが10を対象としてみます。
その場合、以下のように記述しています。

<?php if(is_category('10')): ?>
<p>カテゴリのIDが10のメッセージ!</p>
<?php else: ?>
<p>それ以外のメッセージ!</p>
<?php endif; ?>

と記述しています。

ちなみに、デフォルトのテンプレートを使うと上手く表示できるのですが、今回自分で作っているテンプレートなので、それが問題だと思います。

カテゴリID番号をテンプレート側で出力していない為、上手く動作しないのかな?と思いsingle.phpには
こんな感じで記述してみました。

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$post_cat=get_the_category();
$cat_id=$post_cat[0]->cat_ID;
?>
<?php
$post_cat=get_the_category();
$cat=$post_cat[0];
?>

<div class="entry" id="category-<?php echo $cat->cat_ID ?>">

↑これでページ上には一応、

<div class="entry" id="category-10">とカテゴリIDが10として表示されています。

しかしながら、前述した<p>カテゴリのIDが10のメッセージ!</p>というメッセージが表示されません…。

カテゴリIDが一致しているのに、何故分岐の処理が行われないのでしょうか?何か根本的に間違っていますでしょうか。

WPのテンプレートカスタマイズにお詳しい方いらっしゃいましたら、アドバイスをいただけませんでしょうか。よろしくお願いします。

再度お伝えいたしますが、デフォルトのテンプレートに
<?php if(is_category('10')): ?>
<p>カテゴリのIDが10のメッセージ!</p>
<?php else: ?>
<p>それ以外のメッセージ!</p>
<?php endif; ?>

こちらを入れると表示されますので、この部分は問題ないのかと思います。

宜しくお願いします。

投稿日時 - 2014-09-18 14:38:06

QNo.8759006

すぐに回答ほしいです

質問者が選んだベストアンサー

すいません

やっぱり根本的にis_category()の使い方を間違ってますね
デフォルトのテーマだと動いたというので
そういう使い方もできるのだとつられて思ってしまいましたが
やはりis_category()はカテゴリーアーカイブページ判定の関数で
そもそもsingle.phpで使うような関数ではありません

記事のカテゴリを判定するなら
in_category()です

投稿日時 - 2014-09-18 18:11:52

お礼

何度も有難う御座います。
複数IDの予定になったのでin_categoryでarray指定いたしました。

<php if (in_category(array('10')) : ?>
ID10の内容
<php endif; ?>

in_categoryで問題なく取得表示できました!
大変助かりました、感謝申し上げます。

投稿日時 - 2014-09-18 18:24:41

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

そのコードはloopの中に書かれてますか?

singleページにおいてはthe_post();が実行され
グローバル変数$postがセットされなければ
is_category()は動作しないかと思います

あるいはloop内でquery_posts();など
$postを上書きしてしまう処理があったりしないでしょうか

投稿日時 - 2014-09-18 15:03:34

お礼

有難う御座います。
すみません、あまり理解ができていないため、回答が変かもしれませんが…。

記述はloop内だと思っています。
以下に記載します。こんな感じになっています…。


<?php get_header(); ?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

<div class="post">

<div class="entry">
<?php the_content('Read the rest of this entry &raquo;'); ?>

<?php if(is_category('10')): ?>
<p>カテゴリのIDが10のメッセージ!</p>
<?php else: ?>
<p>それ以外のメッセージ!</p>
<?php endif; ?>

</div>
</div>

<?php endwhile; ?>

<div class="navigation">
<span class="previous-entries"><?php next_posts_link('Older Entries') ?></span>
<span class="next-entries"><?php previous_posts_link('Newer Entries') ?></span>
</div>

<?php else : ?>

<h2>Not Found</h2>
<p>Sorry, but you are looking for something that isn't here.</p>

<?php endif; ?>

<?php get_footer(); ?>

投稿日時 - 2014-09-18 15:41:40

あなたにオススメの質問