我如何通过functions.php

时间:2017-08-28 13:22:24

标签: php wordpress wordpress-theming

我需要在我的主题中从lib文件夹中require_once一个php文件,但只能在登录页面中,这也是博客/帖子索引页面。

当我自己将require_once代码添加到functions.php时它工作正常,但也会在我需要阻止的所有页面和单个帖子上执行。

当我添加以下条件查询标记时,它们似乎被忽略,并且该文件未包含在主页中。

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

我缺少什么以及建议的方法是什么?

注意:必须将其添加到主题的functions.php文件中。

4 个答案:

答案 0 :(得分:3)

如果代码包含在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之后使用条件查询标记(wp操作挂钩是您可以使用这些条件的第一个)。对于主题,这意味着如果您在functions.php的主体中使用条件标记,即在函数之外,它将永远不会正常工作。

答案 1 :(得分:0)

您需要更换&&与||

org.apache.spark.ml

答案 2 :(得分:0)

使用

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

OR

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

你不需要两者。 is_front_page() ---检查是否是您网站的索引页 is_home() ---检查这是否是在设置中选择的博客页面(如果未在设置中选择,则无法工作)

答案 3 :(得分:-1)

wp_head();

之前的header.php中添加此代码
if ( is_front_page() && is_home() ) {
  require_once( get_stylesheet_directory() . '/lib/example.php' );
}