web-dev-qa-db-ja.com

テーマ/プラグインでフロントページのみをターゲットにする方法(後続のページ番号付きページは対象外)

フロントページのみをオンにしたいのですが。後続のページ番号付きページはありません(?paged = 2のように)。特定の出力をサイトの「真の」フロントページにのみ出力したい。

私はもう試した:

<?php if (is_front_page() && get_query_var('paged', 1) == 1 || 0): ?>

しかしこれはpaged変数が存在する場合にのみ機能します(例:domain.com?paged=1)。

1
jonathanbell

あなたはis_front_page()について誤解しています。ソースを見てみましょう:

public function is_front_page() {
    // most likely case
    if ( 'posts' == get_option( 'show_on_front') && $this->is_home() )
        return true;
    elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) )
        return true;
    else
        return false;
}

したがって、上記から、is_front_page()はtrueを返します。

  • 静的フロントページ(読み込み時のFront pageに設定されている場合)および静的フロントページの各ページページ。 /page/2/ etcは、静的フロントページの単なるページ付きページであるため、trueを返します。

  • 閲覧設定がYour latest postsに設定されている場合のホームページ、および投稿ページのすべてのページ付きページ。

is_front_page()はfalseでfalseを返します。

  • 静的フロントページと投稿ページが設定されている場合のブログページはPosts pageと設定されます。ただし、is_home()はここでtrueを返します

  • ホームページまたは静的フロントページではない他のページ。

あなたが考えているのはis_paged()です。この条件は、ページ区切り付きクエリの最初のページではfalseを返し、ページ区切り付きクエリの他のページではtrueを返します。

これを念頭に置くと、おそらく次のものが必要になります。

if (    is_front_page() // Can change to is_home()
     && !is_paged() // Use the NOT operator to return true on page one, false after that
) {
    // Do what you need to do
}
3
Pieter Goosen