rqcmtさん、こんにちは。
is_single と is_front_page で実行することが同じなので、これは if 文の中を
is_front_page() or is_single()
と記述して、フロントページまたは個別投稿ページという条件にまとめることが可能です。
それとPHPが連続してしるのであれば、一文ごとにPHPタグで括らずに全体を括った方が見やすいでしょう。
<?php
if(is_front_page() or is_single()):
the_title();
endif;
if (is_category()):
echo category_description();
endif;
?>
2つのif文を elseif でまとめることもできますが、この場合は大した違いはないので、自分の理解のしやすさに応じて記述すればいいかと思います。
<?php
if(is_front_page() or is_single()):
the_title();
elseif (is_category()):
echo category_description();
endif;
?>
jim912さんご丁寧にありがとうございます。
アドバイスとても参考になりました。
あらためて、構成しなおしたところ、問題が2つ生じてしまいました。ひとつは読み込んだcategory_descriptionにpタグが挿入されてしまうため、下記のようにfilterを指定してみましたが、間違っているようで削除することができません。
<?php
remove_filter (echo category_description', 'wpautop');
if (is_category()):
echo category_description();
endif;
?>
もうひとつは投稿ページはタグを表示させたく、以下のように記述しましたが、動作しません。
<?php
if (is_single()):
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->name.' ';
}
}
endif;
?>
下記の記述ではうまく動作しますが、何が問題なのでしょうか?
<?php if (is_single()): ?>
<?php
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->name.' ';
}
}
?>
<?php endif; ?>
また、このような形でh1タグでマークアップしているのですが、実際のソースを見ると<h1>サンプル </h1>のように余計なスペースが入っています。
これはどうしようもないのでしょうか?
いろいろと申し訳ありませんが、よろしくお願いします。
自己レスです。下記のような記述でうまく動作しました。スペースについてはh1タグとの間に改行があったようで解決しました。
<?php
if(is_front_page()):
the_title();
endif;
if (is_category()):
echo category_description();
endif;
if (is_single() or is_page()):
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->name.' ';
}
}
endif;
?>
1点だけ、category_descriptionのpタグの除去には、remove_filter('term_description','wpautop');
と書かなければいけなかったようですが、なぜか下のPHPの冒頭に加えると動作しません。結局、functions.phpに加えることで動作しました。