web-dev-qa-db-ja.com

Is_home()が正しく動作しないのはなぜですか?

私は私のテーマのfunctions.phpにif(is_home())ビットを入れましたが、うまくいきません。このビットを含む関数はinitで呼び出されるので、is_homeはすでに機能するはずです。

3
naugtur

is_home()は、wp_queryが実行されるまで機能しません。 is_homeが動作する最も初期のフックは'parse_query'ですが、'template_redirect'の方が良いでしょう。

9
John P Bloch

Johnの答えをフォローアップするには、Johnとhakreが言及しているフックの1つに、上記の関数への呼び出しを追加してください。

例えば、あなたのfunctions.phpに以下を追加してください。

<?php
function my_function_name(){
  if(is_home()) do_something();
}

add_action('template_redirect', 'my_function_name');
?>

編集:私は最初あなたの質問を誤解しました - それはあなたがすでにコードをカプセル化している関数を持っているように見えます、それはあなたが間違ったフックで発砲しているということです。そのセクションを別の関数に分割してtemplate_redirectなどで起動させるか、最初にフックした場所を変更してください。

2
ZaMoose