このスニペットは "portfolio-loop.php"ファイルにあります。私はget_template_partを使ってフロントページと他のページにループを表示します。
ループ内にこれがあります。
<?php if( !is_home() || !is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php endif } ?>
フロントページを除外するようには思われません。それはそれ自身のテンプレートの中にあるからでしょうか?
編集
わかりました私はs_ha_dumとTom Nowellのおかげで私の意味上の誤りのいくつかを直しました。私は以下のバリエーションを試しました:
<?php if ( !is_home() && !is_front_page() ) { ?>
<!--nada -->
<?php } else { ?>
<p><?php the_time('F j, Y'); ?></p>
<?php } ?>
//dropping is_home() and trying to keep it as simple as possible
<?php if(!is_front_page()) { ?>
<p><?php the_time('F j, Y'); ?></p>
<?php } ?>
私はまだフロントページの時間を隠すことはできません。せいぜい '<--nada-->'が私のホームページ(home.php)と私のアーカイブ(category-blog.php)の両方に現れます。カスタムカテゴリページはフロントページとしても表示されますか。
編集2
私が平易な英語でやろうとしていること:
私はget_template_partを介して私の最新のブログ記事のうちの3つを表示している私のフロントページ(static、home.php)にループがあります。同じループが私のcategory-blog.php /アーカイブリストにも使われていますが、最後の10の投稿を示しています。このループが表示されている他のページでのみ、レイアウトをきれいにするためにフロントページに日付/時刻を表示したくありません。
私が自分自身を混乱させることができるかどうか見てみましょう。
2つのOR
条件の いずれか がtrue
の場合、コードが実行されます。
is_home
およびis_front_page
は、ページごとにtrue
を返すことがありますが、この場合は無効になります。静的なfromページがある場合は、is_home
がブログのインデックスページになります。
注:WordPress 2.1はこの機能を以前のバージョンとは異なる方法で処理します - 静的フロントページをご覧ください。フロントページとして静的ページを選択した場合(is_front_page()を参照)、このタグはあなたの "投稿ページ"に適用されます。
つまり、is_home
はブログインデックス以外のすべてのページでfalse
になります。つまり、!is_home
条件は、ブログインデックスページとコードがほぼ常に実行されることを除いて、すべてのページでtrue
となります。
is_front_page
のドキュメント.
メインのブログページが表示されていて、設定 - >閲覧 - >フロントページの表示が "あなたの最新の投稿"に設定されている場合、または "静的ページ"に設定されている場合現在表示されているページ.
設定に応じて2つの可能性があります。ブログのインデックスページにtrue
が返されるか、静的ページにtrue
が返されることがあります。静的なフロントページがあると思うので、is_front_page
はそのページのtrue
を返し、!is_front_page
条件はfalseになります。 !is_home
は(おそらくあなたをフォローしているのなら)true
なので、コードは実行されます。
both ブログの索引と静的フロントページから<p><?php the_time('F Y'); ?></p>
を除外したい場合は、OR
ステートメント全体を否定します。
if( !(is_home() || is_front_page()) )
どちらかがtrue
であれば、全体はfalse
です。
フロントページからのみ除外したい場合は、!is_home
部分はまったく必要ないはずです。
&&
の代わりに||
を使用する場合、コードを実行するにはis_home
とis_front_page
の両方がfalse
である必要があります。つまり、あなたはブログのインデックスに載っているわけではなく、同時に表に載っていないということです。
主な問題に取り組む前に、明白な構文エラーを指摘しなければなりません。
<?php if( !is_home() || !is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php endif } ?>
なぜendif
があるのですか?それは全く意味をなさない、そしてプログラミングのすべてに目的/理由があります。あなたはそれをmarigolds-potatoe-farm
に変更するかもしれません、それは同じ効果、致命的なエラーのそれを持つでしょう。だからそれを取り除きます。
これが基本的なif文です。
if ( this statement is true ) {
do this
} else {
do that
}
If():endifの省略形があります。など、それらを使用しないでください、彼らはこの段階で彼らが価値があるよりももっと面倒です。
これらすべてがあなたの編集者によって捕らえられ、強調されているはずです。そうでなかったら、無能な編集プログラムを使用している。中括弧の自動補完、PHPリンティング/構文チェック、カラーコーディング、および自動補完を備えたエディタを入手してください。
例には以下が含まれますが、これらに限定されません。
物事を自分自身のために難しくしないでください
if( !is_home() || !is_front_page() ) {
これは英語の散文ですか。
ホームページでない場合はこれを行い、フロントページでない場合はこれも行う
それがホームページなら、それはそれをするでしょう。フロントページであれば、それをします。
あなたが意味していると私は信じています:
ホームページでもフロントページでもない場合は、それを実行してください。
それは:
if ( !( is_home() || is_front_page() ) ) {
あるいは、次のように書くこともできます。
if ( !is_home() && !is_front_page() ) {
またはさらにもっと:
if ( !is_home() ) {
if ( !is_front_page() ) {
目標がそのような場合
このループが表示されている他のページでのみ、レイアウトをきれいにするためにフロントページに日付/時刻を表示したくありません。
それからあなたは簡単な条件を使うことができるはずです:
<?php if ( ! is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php } ?>
何を達成しようとしているのかを正確に知らずに、必要な条件文を正確に提供することは実際には不可能です。そうは言っても、 is_home()
と is_front_page()
のどちらかまたは両方がtrueまたはfalseになる条件は次のとおりです。
is_home()
はtrueです(サイトのフロントページでも、指定された静的ページでも)。is_front_page()
はtrueです。サイトのフロントページにBlog Posts Indexが表示されているか、指定された静的ページが表示されているかに関係ありません。Site Front Pageがブログ投稿インデックスを表示するように設定されている場合:
'posts' == get_option( 'show_on_front' )
is_home()
とis_front_page()
はtrueです。is_home()
とis_front_page()
の両方がtrueですis_home()
はtrue、is_front_page()
はfalseです。Site Front PageがStatic Pageを表示するように設定されている場合:
'page' == get_option( 'show_on_front' )
is_home()
)では、is_front_page()
はfalse、get_option( 'page_on_front' )
はtrueです。is_home()
はtrue、is_front_page()
はfalseです(つまり、Page ID = get_option( 'page_for_posts' )
)。is_home()
とis_front_page()
は、他のすべてのページでfalseです私はis_home
とis_front_page
がis_page
と似ていると仮定します The Loop 。
私の現在の回避策は、少なくとも、variableをThe Loopに送信することです。
だから、大まかな例として、あなたのホームページにポートフォリオループがあるとしましょう...多分下のような行:
get_template_part( 'loop', 'portfolio' );
その行の前に変数を追加し、それをglobalにして、後でループで次のように使用できます:
global $hide_time;
$hide_time = true;
get_template_part( 'loop', 'portfolio' );
次に、ループ内で、この変数をループの条件として使用できます。
<?php
global $hide_time;
if( $hide_time != true ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php } ?>
注:変数は両方のファイルでglobalでなければなりません。
単純にテンプレートからコードを取り出して、次のように子のテーマ関数ファイルからフックしないでください。
add_action ( 'your_themes_hook', 'display_date_exclude_front_page' );
function display_date_exclude_front_page() {
if ( !is_front_page() ) {
echo the_time('F Y');
}
}
注: your_themes_hookをテーマフックまたはWordPressフックに置き換えることを忘れないでください。
is_front_page はフロントページで常にtrueを返します。
is_home() は、それがどこにあるかに関わらず、あなたの投稿ページに対してtrueを返します。
ブログページのテンプレートを使用しているページか、デフォルトの 閲覧設定 を使用している場合はフロントページを使用しているページのどちらでもかまいません。