web-dev-qa-db-ja.com

Is_pageとis_front_pageの両方向を真にすることはできますか?

何らかの理由でis_front_pageが私のサブサイトで起動されず、Readingの下で静的なホームページとして設定されたページを持つ独自のヘッダを持つ子テーマを実行します。

このコードをheader.phpに入れて、投稿/ページまたはフロントページに表示するメタタグを制御しますが、is_single/is_pageのみが出力されます。

<?php if (is_single() || is_page()) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<!-- this is printed -->

<?php endwhile; endif; elseif(is_home() || is_front_page()) : ?>
<!--this is not printed -->

<?php endif; ?>

is_pageis_front_pageは、静的フロントページを使用しているときはどちらも正しいので、相殺されているのでしょうか。

1
Morten Skogly

確かに、あなたのサイトが前面に静的なページを持っているなら、条件is_pageは真となり、WPは決してelseifに到達しません。

フロントページに別のテンプレートを使用する場合は、最初の条件から除外して、その場合はfalseを返すようにしてください。このような:

if ((is_single() || is_page()) && !is_front_page())

あるいは、文を切り替えることもできます。最初にhome/frontをテストし、それがsingle/pageに対して失敗した場合。

1
cjbj