如何获取WordPress中的当前插件目录?

bog*_*bog 37 php wordpress plugins

我需要获取当前的插件目录

[wordpress_install_dir]/wp-content/plugins/plugin_name
Run Code Online (Sandbox Code Playgroud)

(如果getcwd()从插件中调用,则返回[wordpress_install_dir],安装的根目录)

感谢帮助

Tom*_*ger 71

为什么不使用专门为此目的设计的WordPress核心功能?

<?php plugin_dir_path( __FILE__ ); ?>
Run Code Online (Sandbox Code Playgroud)

请参阅此处的法典文件.

你也有

<?php plugin_dir_url( __FILE__ ); ?>
Run Code Online (Sandbox Code Playgroud)

如果您要查找的是URI而不是服务器路径.

请参阅此处的法典文件.

IMO总是最好使用核心中可用的最高级别方法,就是这样.它使您的代码更具前瞻性.

  • 此外,如果您尝试获取与该插件目录相关的位置的资源,请使用`plugins_url('images/image_inside_plugin_folder.png',__ FILE__)` (5认同)
  • 这是正确的答案.如果插件被用作MU(必须使用)插件,则WINP_PLUGIN_URL将不起作用,而plugin_dir_path()和plugin_dir_url()将使用. (3认同)
  • 尽管有名称,`plugin_dir_path`不一定得到插件目录,但它获取作为第一个参数传递的路径的父目录.因此,如果`__FILE__`不在插件目录中,`plugin_dir_path(__ FILE__)`将不会返回插件目录.请参阅[有关`plugin_dir_path`的更多信息](https://developer.wordpress.org/reference/functions/plugin_dir_path/#more-information) (3认同)

The*_*dic 37

看看你自己的答案@Bog,我想你想要;

$plugin_dir_path = dirname(__FILE__);
Run Code Online (Sandbox Code Playgroud)

  • 在PHP 5.3中,您可以使用新的常量`__DIR__`,它可以实现相同的功能. (12认同)
  • 这仅在调用它的文件位于插件的根目录中时才有效.例如,如果插件中有子文件夹,并且您从其中一个文件夹中调用它,那么您最终将获得该子文件夹的路径! (5认同)
  • 不,它更具有前瞻性,因为如果核心团队由于某种原因决定改变架构或机制,他们将修改plugin_dir_path()函数以反映这一变化,而直接调用dirname($ file)将是搁浅.如果核心中的函数存在,请使用它,即使它看起来只是一个无意义的包装器. (3认同)
  • 你快到了.哎呀,你甚至将变量命名为内置的WordPress函数,它可以满足您的需求.通过使用推荐的WordPress功能来实现您想要的功能,使您的代码面向未来.看我的回答. (2认同)

bre*_*njt 14

这实际上会得到你想要的结果:

<?php plugin_dir_url(__FILE__); ?>
Run Code Online (Sandbox Code Playgroud)

http://codex.wordpress.org/Function_Reference/plugin_dir_url


ste*_*ase 8

要获取插件目录,您可以使用Wordpress功能plugin_basename($file).所以你会使用如下来提取插件的文件夹和文件名:

$plugin_directory = plugin_basename(__FILE__); 
Run Code Online (Sandbox Code Playgroud)

您可以将其与插件目录的URL或服务器路径结合使用.因此,您可以使用常量WP_PLUGIN_URL来获取插件目录URL或WP_PLUGIN_DIR获取服务器路径.但正如Mark Jaquith在下面的评论中提到的那样,只有插件存在于Wordpress插件目录中才有效.

Wordpress codex中阅读更多相关信息.

  • 不要使用`WP_PLUGIN_URL`或`WP_PLUGIN_DIR` - 插件可能不在plugins目录中. (3认同)

man*_*yal 5

$full_path = WP_PLUGIN_URL . '/'. str_replace( basename( __FILE__ ), "", plugin_basename(__FILE__) );
Run Code Online (Sandbox Code Playgroud)
  • WP_PLUGIN_URL – 插件目录的 URL
  • WP_PLUGIN_DIR – 插件目录的服务器路径

此页面可能会有所帮助:确定插件和内容目录