如何获取WP包含目录


how to get wp include directory?

我需要为我的wp插件开发做require_once。在我看来,我需要使用绝对路径。

我目前的解决方案是

$delimiter = strpos(dirname(__FILE__), "/")!==false?"/":"''"; //win or unix?
$path = explode($delimiter,  dirname(__FILE__));
require_once join(array_slice($path,0,count($path)-3),$delimiter) . "/wp-admin/includes/plugin.php"; 

我想知道是否有更好的方法来处理这个问题,一种通用方法。

如果wp插件目录结构发生变化怎么办。所以这部分count($path)-3将不再有效....

WordPress在

启动时建立包含目录的路径。

require_once ABSPATH . WPINC . '/your-file.php';

尝试:

require_once realpath(__DIR__.'/../../..').'/wp-admin/includes/plugin.php';

或者如果您使用的是 PHP 5.3 <,请将__DIR__替换为 dirname(__FILE__)

或者你可以试试:

require_once ABSPATH . WPINC . '/plugin.php';
可以利用

WP_CONTENT_DIR并制作一个很好的常数

define(WP_INCLUDE_DIR, preg_replace('/wp-content$/', 'wp-includes', WP_CONTENT_DIR));

或函数

function wp_include_dir(){
    $wp_include_dir = preg_replace('/wp-content$/', 'wp-includes', WP_CONTENT_DIR));
    return $wp_include_dir;
}

你有没有试过做bloginfo('wpurl'(/wp-content/plugins?

我曾经将其定义为常量,就像其他人一样......

if(defined('WP_CONTENT_DIR') && !defined('WP_INCLUDE_DIR')){
   define('WP_INCLUDE_DIR', str_replace('wp-content', 'wp-includes', WP_CONTENT_DIR));
}

如果需要,仍然可以与is_dir()进行检查并进一步遍历。