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

締切り済みの質問

WordPressの各ページにh1を作りたい

ここ数日、行き詰まっています。どうしても解決ができなく、
ご教示頂けませんでしょうか。

何卒よろしくお願い申し上げます。

現在、WordPressテーマのヘッダーphpに条件分岐でH1をつけようと取り組んでいます。
今できていることは、
・トップページのh1表示
・投稿、固定ページにカスタムフィールドにh1を作り、それぞれのページに表示
・カテゴリー、タグの一覧ページへの表示
・お知らせの一覧と詳細ページへの表示

できていないこと
・通常の投稿のアーカイブページへの表示
・製品カテゴリーで設定した名前での一覧ページ(アーカイブ)への表示

となります。

もともとのテンプレートには、製品紹介用のカスタム投稿タイプが用意されていました。
管理画面上のメニューでは、
製品紹介
-新規追加
-製品カテゴリー
となっています。

できていないというのは、この製品カテゴリーのところになり、
WordPress Codexの条件分岐タグページを見ながらいろいろ組み替えたり
したのですが、どうしてもうまく表示することができないでおります。

ソースは以下のようにしています。

<?php if(is_front_page() && is_home()): ?>
<div class="area-h1">
<h1>トップページのh1は表示されています。</h1>
</div>

<?php elseif(is_category()): ?>
<div class="area-h1">
<h1>カテゴリー:<?php single_cat_title(); ?>で表示されています。</h1>
</div>

<?php elseif(is_tag()): ?>
<div class="area-h1">
<h1>タグ:<?php single_tag_title(); ?> で表示されています。</h1>
</div>

<?php elseif(is_post_type_archive( 'news')): ?>
<div class="area-h1">
<h1>お知らせ一覧に表示されています。</h1>
</div>

<?php elseif(is_singular( 'news')): ?>
<div class="area-h1">
<h1><?php the_time('Y'); ?>年<?php the_time('M'); ?><?php the_time('d'); ?>日のお知らせで表示されています。</h1>
</div>

<?php elseif(is_post_type_archive( 'product')):?>
<div class="area-h1">
<h1>商品一覧に表示されました。</h1>
</div>

<?php elseif(is_singular( 'product')): ?>
<div class="area-h1">
<h1><?php echo get_post_meta($post->ID , 'h1' ,true); ?>で商品ページに表示されました。</h1>
</div>

※ここから下が分かりません。

<?php elseif(is_archive()): ?>
<div class="area-h1">
<h1><?php the_time('Y'); ?>年<?php the_time('M'); ?>の記事一覧、通常投稿のアーカイブページ</h1>
</div>


どちらか一方しか有効でない


<?php elseif(is_archive( 'product')): ?>
<div class="area-h1">
<h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1>
  </div>

<?php endif ; ?>

その他に試したもの
(1)<?php elseif(is_tax( 'product')): ?>
<div class="area-h1">
<h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1>
</div>
(2)<?php elseif(is_category( 'product')): ?>
<div class="area-h1">
<h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1>
</div>

ここ数日、ずっとできないでおりまして、
おかしなところなどアドバイスを頂けましたら本当に助かります。

何卒よろしくお願い申し上げます。

マルチメディアファイルは削除されたか見つかりません。

投稿日時 - 2015-08-01 18:30:16

QNo.9022629

すぐに回答ほしいです

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

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

回答(2)

ANo.2

>is_archiveの中でまた条件分岐とか
>出きるのでしょうか??

当然、入れ子に出来ます。is_post_type_archive( $post_type )を内包すればいいと思います。

投稿日時 - 2015-08-02 18:57:52

お礼

ご教示ありがとうございます。

その後、

<?php elseif(is_archive( )): ?>
<?php if(is_post_type_archive( 'product')):?>
<div class="area-h1">
<h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1>
  </div>
<?php endif ; ?>
<?php endif ; ?>
というようにしたり、isをinにしたりin_categoryなどにしたり、
順序を入れ替えたりもしてみましたが
やはりできずにおります。

どうしたらよろしいのでしょうか・・・?

すみません、教えていただけましたら
幸いです。

よろしくお願い致します。

投稿日時 - 2015-08-03 06:39:00

ANo.1

>どちらか一方しか有効でない

そもそも、is_archiveに引数を渡しているのがおかしい(is_archiveは引数を取らない)。is_archive()は「アーカイブページかどうか」だけしか判断できません。

http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_archive
------- 引用ここから
is_archive()はパラメータを受け付けません。 カスタム投稿タイプのアーカイブかどうかをチェックしたい場合は、 is_post_type_archive( $post_type ) を使用。
------- 引用ここまで

投稿日時 - 2015-08-01 23:07:15

お礼

shimix 様

お世話になります。
ご回答本当にありがとうございます。

引数は受け付けないことは
理解できました。

is_archiveの中でまた条件分岐とか
出きるのでしょうか??

inを使ってみたりと試しているのですが
どうもできないでいます。

気にかけて下さいまして
誠にありがとうございます。

投稿日時 - 2015-08-02 07:47:54

あなたにオススメの質問