子主题中指向子主题的GET_TEMPLATE_DIRECTORY_URI

时间:2017-05-16 作者:Bill

根据文件(https://codex.wordpress.org/Child_Themeshttps://developer.wordpress.org/reference/functions/get_template_directory_uri/), 我的理解是get_template_directory_uri() 如果在子主题中使用,将返回父主题目录的URL。但这并没有发生在我身上。

在我试图发展的儿童主题中,当我使用get_template_directory_uri() 它返回子主题目录的URL,而不是父主题目录的URL。如果我在管理主题页面上单击子主题的主题详细信息,WordPress会声明该主题是另一个主题的子主题,这正是我所期望的。我有一个

Template: parent
子主题样式中的线条。css。

其他相关事实:

我正在使用WordPress多站点,我开发了父主题,并将其用于多站点中的一个其他站点,效果很好,这两个主题(父主题和子主题)都是网络激活的,在我工作的站点中都可以访问,所以我认为这与家长主题无关

  • 我禁用了所有插件,以查看其中一个插件是否存在问题,但没有成功-没有一个插件可能是导致此问题的原因,我创建了一个Twenty14副本,并将其作为父主题的子主题,同样的问题也发生在Twenty14副本中,然后我还添加了一个模板:line In style。css使其成为244的子级,我也看到了同样的行为(即,管理主题页面声明复制的主题是244的子级,但get\\u template\\u directory\\u uri函数没有给我父级主题的目录)
  • 有人对这里可能出现的问题有什么建议吗?还是我误解了get_template_directory_uri() 应该有用吗?

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

    CAUSE

    好的,在深入研究WordPress代码和数据库之后,问题是

    get_option(\'template\')
    
    调用的

    wp-includes/theme.php : get_template()
    
    正在返回子主题,而不是父主题,但仅针对我的多站点中的特定站点。并在wp\\u{SITE-ID}\\u options表中查找该站点的数据库记录,其中

    option_name = "template"
    
    记录指向的是子主题,而不是父主题。我不知道为什么仪表板中“管理主题”页面上的主题详细信息表明,当数据库记录不正确时,我的问题子主题是子主题。

    至于为什么这个数据库条目搞砸了,我不确定,但当我最初尝试开发有问题的子主题时,它破坏了我的WordPress多站点(包括仪表板),因此我临时在服务器上重命名了主题的文件夹名,以使WordPress返回到默认主题-也许这就是原因。

    SOLUTION

    将主题切换到不同的主题,然后再切换回子主题修复了此问题-它会导致相关数据库记录(即wp{SITE-ID}\\u选项中的option\\u name=“template”)设置为正确的值,即父主题。

    SO网友:Celso Bessa

    你需要的是get_stylesheet_directory_uri, 这和get_template_directory_uri 但是,如果您使用的是子主题,它将返回子主题目录,如果不是,它将返回父主题目录。

    echo get_stylesheet_directory_uri();
    

    结束

    相关推荐