如何获取当前正在使用的主题目录的路径?

时间:2015-11-11 作者:SimonT

There is an Edit at the end of this question.

我想在脚本标记中包含一个来自主题目录的js子目录的文件。我想在主题的索引、搜索、单一、归档等php文件中这样做。

我使用的主题的URL是:http://www.example.com/welg/wp-content/themes/mytheme

脚本标记为:

<script type="text/javascript" src="/welg/wp-content/themes/themename/js/filename.js">
我尝试了get\\u theme\\u root()函数,但结果一派胡言。好吧,至少在一个可用于我的目的的目录方面是胡说八道的。

返回的路径基本上是从托管服务器目录结构的顶部开始的。

/hermes/bosoraweb081/b1107/myd.sugarcatsimon/public_html/pdmeoff/pdroot/welg/wp-content/themes 
该输出对于任何目的都是无用的,除非有人在服务器控制台上通过操作系统直接访问服务器本身。

我期望从get\\u theme\\u root()返回值为:

/welg/wp-content/themes/themedir (with or without a trailing slash)
我尝试了我能找到的所有“获取”主题功能以及site\\u url和home\\u url

这是他们所有人的输出(我在http://text的前面添加了h,以克服我只能发布两个链接的限制。只需忽略额外的h即可。

以下是各种函数的输出:

get_theme_root_uri()-- http://www.example.com/welg/wp-content/themes

get_theme_root() -- /hermes/bosoraweb081/b1107/myd.sugarcatsimon/public_html/pdmeoff/pdroot/welg/wp-content/themes

get_theme_roots() -- /themes

site_url -- http://www.example.com/welg

home_url http://www.example.com/welg
我错过什么了吗?是否有其他函数将返回当前使用的主题目录相对于站点根或WP根的路径?

我想我可以使用get\\u them\\u url()的输出,使我的链接成为完全限定的链接,而不是相对链接,并将主题名称和/js/filename作为后缀。但是我想要一个更好的解决方案,它不依赖于知道任何目录名称,例如当前主题的名称/目录。

还有一件事——我习惯性地使用www.example。com作为我在网上发布的示例中的域,大多数网站都告诉你使用它,但我从来没有真正想过。

我刚刚意识到,有一个实际的网站与该域名。所以,我进入了www.example。com进入浏览器地址栏,我得到了-好吧,你自己试试。这很有趣。

EDIT

回答写答案的人说我应该排队并注册脚本-

在WP Land中,使用“排队”和“注册”这两个词意味着什么?

就WP而言,您所展示的排队和注册功能的好处是什么?

仅仅因为那些写WP的人以一种特定的方式做某事并不意味着它只能以这种方式做,或者这是最好的方式。

我很想知道排队和注册适用于WP的函数的原则。

我对WP是新手,但对计算肯定是新手。我从1973年开始从事计算机工作,大约42年多了。

在个人电脑世界中,使用了几十年的词语,具有特定的商定含义,却被用来表达新的含义,这种情况太常见了。

对于现有术语已经涵盖的含义,也有发明新术语的倾向。

在个人电脑世界里,一个“老前辈”所说的玫瑰往往不是玫瑰。当在计算(或任何技术领域)中出于其他目的使用具有既定含义的术语时,通信会受到影响。

糟糕的通信会导致糟糕的设计和代码。

谢谢你的回复,我真的很想理解那些关于WP的话。

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

使用get_stylesheet_directory_uriget_template_directory_uri 返回主题目录的URI。在使用子主题的情况下,前者将返回子主题目录。如果子主题处于活动状态,则后者将始终是主主题或父主题。

此外,请注意,“路径”通常是指您从get_theme_root(). 它是服务器的本地位置,与URI/URL不同。

SO网友:AndyWanna_KnowItAll

您应该始终排队或注册您的脚本和样式,而不是直接调用它们。有关更多信息,请查看codexhttps://codex.wordpress.org/Function_Reference/wp_enqueue_script

现在要回答您的问题,您有一个名为themename的主题,它有一个包含文件名的js目录。js。在函数中添加以下代码。php

function theme_js(){

wp_enqueue_script(\'theme_js\',get_template_directory_uri() . \'/js/filename.js\', array(), \'\', true);}

add_action( \'wp_enqueue_scripts\', \'theme_js\' );
在空数组中,可以放置“jquery”或任何其他依赖项。js文件可能有。在页脚区域加载所有js文件也是一种更好的做法。您可以将最后一个参数设置为false,而不是true,然后文件将加载到标头中。

如果将此代码放入函数中。php不起作用,请记住

<?php wp_footer(); ?>
在页脚中。结束正文标记之前的php。

希望这有帮助。