不能在函数.php中使用is_Single()和is_admin

时间:2014-08-25 作者:kassemEzz

我在我的wordpress网站上使用了一个主题childtheme,而不是将我的所有功能都放在功能中。php文件,我想通过创建多个其他函数文件(admin\\u functions.php、single\\u functions.php…)使其更有组织性并将这些文件包含在my childtheme的函数中。php文件如下:

require_once (\'my-functions/admin-functions.php\');
require_once (\'my-functions/single-functions.php\');
这很好用。

但是,我试图通过使用以下条件标记使wordpress仅加载所需的文件:

if(is_admin())
   require_once (\'my-functions/admin-functions.php\');
elseif(is_single())
   require_once (\'my-functions/single-functions.php\');
这根本行不通。

我似乎找不到原因。我认为在条件函数(is\\u single和is\\u admin)可用之前,可能必须先调用一些wordpress函数。但我似乎哪儿也去不了。

非常感谢您的帮助。谢谢

2 个回复
最合适的回答,由SO网友:jdgregson 整理而成

由于这是一个重要的问题,没有真正的答案,我将提供我在寻找解决方案后发现的问题,尽管我没有回答为什么它不能像我们都认为的那样工作。

您需要在某个地方连接到WordPress,如下所示:

// load our posts-only PHP
add_action( "wp", "only_posts" );
function only_posts() {
    if( is_single() ) {
        // we are on a single post
        include_once( "posts.php" );
    }
}
因此,在你的情况下,我建议写如下,以获得is_singleis_admin 在中工作functions.php:

add_action( "wp", "include_conditionals" );
function include_conditionals() { 
    if( is_admin() ) {
        require_once( "my-functions/admin-functions.php" );
    } else if( is_single() ) {
        require_once( "my-functions/single-functions.php" );
    }
}
请参见here 了解更多信息。

SO网友:Rarst

首先,让我们看看何时何地可以使用这些条件:

  • is_admin() 几乎可以普遍使用。WP_ADMIN it检查的常量在管理入口点中定义得非常早,如果不存在,则排除在外is_single() ir依赖于全球$wp_query 设置好后,这些条件主要用于主题的模板文件中。其次,条件加载没有多大意义。WordPress本身就是这样做的,但坦率地说,这是值得怀疑的胜利(操作码缓存在现实中的工作方式更是如此,任何严肃的网站都应该使用操作码缓存),而且当你在“错误”的上下文中需要函数时,会带来很多不便。

    对于类,这主要通过自动加载来处理。然而,对于函数来说,阻力最小的途径就是加载它们并使用它。

结束

相关推荐