此代码用于获取当前插件的目录:plugin_dir_url( __FILE__ )

我应该使用什么来获取当前主题的目录?

#1 楼

我认为您必须谨慎一点,因为这取决于您要尝试执行的操作。

如果使用子主题,则get_template_directory();仍将转到父主题。但是,get_stylesheet_directory();将转到当前主题,孩子还是父母。同样,这两个函数都返回绝对服务器路径。

如果您想要一个完整的URI,则对于链接或图像,出于上述原因,应使用正确的get_template_directory_uri();get_stylesheet_directory_uri();

摘要



get_stylesheet_directory():当前主题目录的文件路径

get_stylesheet_directory_uri():当前主题目录的URL路径

get_template_directory():父主题目录的文件路径

get_template_directory_uri():父主题目录的URL路径


评论


+1。始终使用样式表文件路径/ URL引用当前主题,并保留模板文件路径/ URL引用父主题。

–芯片Bennett
2012年4月5日21:00

不幸的是,get_template_directory()返回整个服务器路径,例如/ var / www / the / path / of / actual / wp-content / themes / mytheme,如果WP通过FTP连接,则这不是您要使用$ wp_filesystem做的事情。

– NoBugs
2014年9月11日在3:41



@NoBugs-我也正在获取整个服务器路径,但是使用get_stylesheet_directory_uri()而不是get_stylesheet_directory()解决了该问题。

– TheLibzter
15年2月4日在22:19

谢谢!我发现的大多数答案都可以通过使用get_stylesheet_directory()来解决,但后来我留在服务器的根目录中。 get_stylesheet_directory_uri()是我祈祷的答案! 🙏

– sigmapi13
20年8月7日在17:44

#2 楼

get_stylesheet_directory_uri是您想要的。它返回当前主题的URL。 get_stylesheet_directory将返回服务器上的文件路径。
例如:
 <img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/image.png" />
 

如果需要父主题, get_template_directoryget_template_directory_uri是等效的。
如果没有父主题,则两者将返回相同的值。
进一步阅读:


get_stylesheet_directory

当前主题的绝对文件夹路径
例如/var/www/yoursite/wp-content/themes/child_theme




get_template_directory
父主题的绝对文件夹路径,例如/var/www/yoursite/wp-content/themes/parent_theme




get_stylesheet_directory_uri

当前主题的完整URL
例如https://example.com/wp-content/themes/child_theme




get_template_directory_uri

父主题的完整URL
例如https://example.com/wp-content/themes/parent_theme





评论


get_stylesheet_directory()是正确的答案。如果正在使用子主题,则get_template_directory()将指向父主题。

–卢卡斯·布斯塔曼特(Lucas Bustamante)
20年7月11日,在2:20

我相应地调整了答案

– Tom J Nowell♦
20年8月25日在14:02