WordPress フロントページとホームページ
WordPress は素晴らしい CMS です。やりたいことが何でもできます。ただし、場合によっては、いくつかの基本的な機能で問題が見つかることがあります。たとえば、テーマやプラグインで is_front_page と is_home WordPress ホームページの条件付きを使用している可能性があります (条件付き関数の詳細については、コンディショナル タグの投稿をご覧ください)。しかし、それは間違っています!
ホームページ設定
これらの条件関数を使用すると、ホームページが表示されているかどうか (is_home)、ホームページが静的ページを使用しているかどうか (is_front_page) を確認できます。このような動作は、[設定] => [読み取り] で定義できます。
プラグインまたはテーマでは、この関数を使用して、ユーザー設定に応じてコンテンツを表示または変更できます。しかし、あなたは大きな間違いを犯しています。静的なブログ ページを考慮に入れていないのです。ホームページの静的ページを定義するときに、ブログ ページも定義できます。ブログ ページは、すべての投稿をリストするためにデフォルトの WordPress ホームページを置き換えます。
長い話を簡単に言うと、is_front_page は常に is_home と一緒にテストする前にテストする必要があります。その理由は次のとおりです。
使い方
1.通常の設定:
デフォルトの WordPress ホームページには、最新の投稿がリストされます。
- URLはこちら:website.com
- is_home は TRUE を返します
- is_front_page は TRUE を返します
ここでは、何も問題はありません。
2.静的ホームページ:
ホームページは静的ページの 1 つを使用しています。
- URLは依然としてwebsite.comです
- is_home は FALSE を返します
- is_front_page は TRUE を返します
静的ホームページには問題はありません。is_front_page は true を返します。
3.静的なブログ ページ
あなたのページの 1 つに、すべての投稿がリストされています。
- URLはwebsite.com/ページ名です。
- is_home : TRUE
- is_front_page : FALSE
ここで、いくつかの問題が発生する可能性があります。 is_home は TRUE を返しますが、これはあなたのホームページではありません。メイン カテゴリ アーカイブと同様に、すべての投稿をリストする WordPress ページです。
コンディショナルタグを使用する
プラグインまたはテーマを作成するときは、ユーザーがそれらのページ設定を使用する可能性があることを考慮する必要があります。したがって、is_home を使用するたびに、必ずその前に is_front_page をテストする必要があり、そのためには常に条件パラメータを使用する必要があります。
そうしないと、一部のユーザーと問題が発生する可能性があります。たとえば、ホームページのコンテンツを表示するために is_home のみをテストすると、静的なホームページに問題が発生し、適切なコンテンツが表示されなくなります。
正しく行う方法は次のとおりです。
if ( is_front_page() && is_home() ) {
// Default homepage ( both the front page and the recent posts page)
} elseif ( is_front_page() ) {
// Static homepage
} elseif ( is_home() ) {
// Blog page
} else {
// Everything else
}
これは、ホームページやブログ ページのコンテンツを表示または変更する唯一の (正しい) 方法です。
重要: これらの機能は、テンプレート ファイルや特定のアクション フックなどで WordPress が読み込まれた場合にのみ機能することに注意してください。これらの条件文を function.php にダンプするだけで機能することを期待することはできません。
あなたはどうですか?
すでにこの問題に遭遇しましたか?あなたの解決策は何でしたか?それについて聞きたいです!