2017-08-28 10 views
1

私のテーマのlibフォルダからPHPファイルをrequire_onceにする必要がありますが、ブログ/ポストインデックスページでもあるランディングページだけです。私は条件付きでホームページにPHPファイルを含めるにはfunctions.phpから

functions.phpにrequire_onceというコードを追加すると、うまく機能しますが、すべてのページや単一の投稿でも実行されます。

次の条件付きクエリタグを追加すると、それらは無視され、ファイルはホームページには含まれません。

if (is_front_page() && is_home()) { 
    require_once 'lib/example.php'; 
} 

何が欠けていますか?これを行うにはどのような方法がありますか?

注:これはテーマのfunctions.phpファイルに追加する必要があります。

+0

require_onceはfunctions.phpで行われていますが、私は言及していませんでした。 –

答えて

2

それが含まれている場合は、そのままあなたのコードは動作しません。 functions.phpの本体では、is_homeまたはis_front_pageのすべてが動作する準備が整う前にロードされるためです。それ以降に起こるWordpressのアクションの1つにフックする必要があります。

次のコードは、条件付きアクションが動作しますwp行動、にフックします:

// create a function to do the conditional check and include the files 
function include_files_homepage_only() { 
    if (is_front_page() && is_home()) { 
     require_once 'lib/example.php'; 
    } 
} 

// hook into the wp action to call our function 
add_action('wp', 'include_files_homepage_only'); 

注:

  • フロントページやホーム(ポストインデックスページ)は同じですあなたのサイトは なので、ページがis_front_pageis_homeに等しいかどうかを確認する必要はありません。 WP管理者設定でフロントページまたは投稿ページを変更した場合、両方のチェックを使用すると、期待される機能が損なわれる可能性があります。
  • ファイルには適切なパスを使用する必要があります。 get_stylesheet_directoryまたはget_template_directoryを として使用してください。

リファレンスWordpress Codex for Conditional Tags

警告:あなたが唯一のWordPress(WPアクションフックがそれを通してあなたがこれらを使用することができます最初のものであるにposts_selection action hook後に条件付きクエリタグを使用することができます条件付き)。テーマの場合、これは、条件タグがfunctions.phpの本体で、つまり関数の外側で使用されている場合、条件タグが決して適切に動作しないことを意味します。

+0

ありがとう、それはまさに私が逃していたものでした。 –

-1

は、あなたがして& &を交換する必要がありますwp_head();

if (is_front_page() && is_home()) { 
    require_once(get_stylesheet_directory() . '/lib/example.php'); 
} 
0

前に、header.phpの中で、このコードを追加します。||

if (is_front_page() || is_home()) { 
    require_once 'lib/example.php'; 
} 
+0

私たちは、両方の関数が異なるものをチェックしていると仮定します。私は誰があなたに投票したか分かりませんが、私は0に再度投票しました。 – delboy1978uk

0

のいずれかを使用

if (is_front_page()) { 
    require_once 'lib/example.php'; 
} 

OR

if (is_home()) { 
    require_once 'lib/example.php'; 
} 

あなたは両方を必要としません。 is_front_page() ---ウェブサイトのインデックスページを確認します。
is_home() ---チェックし、これが(その設定で選択されていない場合、これは動作しません)の設定で選択されたブログページであれば

+0

これはPHPの関数からは機能しませんが、例えば動作します。 index.phpから。私は何とかfunctions.phpにフックする必要がありますか? WPはfunctions.phpに含まれている場合、ホームステージかフロントページかをこの段階で知ることはできませんか? –

関連する問題