2017-08-28 59 views
1

我需要require_once從lib文件夾在我的主題php文件,但只在着陸頁這也是博客/後索引頁。我怎麼能有條件地僅包含網頁PHP文件,通過functions.php的

當我將require_once代碼自身添加到functions.php時,它可以正常工作,但也可以在需要防止的所有頁面和單個帖子上執行。

當我添加下列條件查詢標籤,他們似乎被忽略,文件不包含在主頁上。

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

我在想什麼,推薦的方法是什麼?

注:這必須添加到主題的functions.php文件。

+0

require_once在functions.php中完成,我忘了提及。 –

回答

2

您的代碼將無法正常工作,因爲它是如果包括它在functions.php的主體中,因爲它在所有準備工作之前都會被加載,以便is_homeis_front_page正常工作。您需要勾選之後發生的其中一項Wordpress操作。

將下面的代碼掛接到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的(可溼性粉劑行動掛鉤是第一位的,通過它,你可以使用這些使用條件查詢標籤posts_selection action hook後條件句)。對於主題,這意味着如果在functions.php主體中使用它,即在函數之外使用條件標籤,它將永遠不會正常工作。

+0

謝謝,那正是我所錯過的。 –

-1

在header.php中添加此代碼之前wp_head();

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

您將需要||更換& &

if (is_front_page() || is_home()) { 
    require_once 'lib/example.php'; 
} 
+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中時,如果它是home或frontpage? –

相關問題