web-dev-qa-db-ja.com

is_front_page、is_page( 'slug')、is_page(id)が機能しない

現在のページがホームページの場合、サイドバーに条件付き書式を表示するための機能がありません。

  • is_front_page、
  • is_page( 'home')、
  • is_page(id)

ホームページに実装されているelse節を追加しました。

Options> Readingで、Homeというページをフロントページに指定しました。スラッグ 'home'と13のページID(Homeページの編集時にURLから取得)はすべてfalseを返します。

サイドバーに<?php the_ID(); ?>を配置すると、home.php(ホームページに割り当てられたテンプレート)によっても表示される(タイトルのみ)ブログ投稿の投稿IDが表示されます。

他の方法でフロントエンドにページIDを明示的に表示する方法がわからないので、正しいIDを使用していることがわかります。

1
Steve

ホームページテンプレートのループの後に wp_reset_query 関数呼び出しを入れてみてください。

ホームページでカスタムクエリを使用していて、wp_reset_queryを使用していない場合、条件付きチェックは常にそのカスタムクエリによって取得された最後の投稿をポイントするため、ホームページかどうかのチェックに失敗します。

2

コードの内容を正確に把握していなくても、サイドバー内でページIDをテストしている場所は、サイドバーに投稿を表示するループの中に既に入っているようです。

サイドバーのループが始まる前にコンディショナルテストを実行し、それをあなたのhome.phpファイルの別の変数に保存し、現在の投稿IDではなくサイドバーでその変数をチェックしてみてください。

0
CharlesRock