如何获取wp include目录?

时间:2011-06-01 01:52:04

标签: php wordpress

我需要为我的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将不再有效....

5 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:7)

尝试:

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

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

或者你可以试试:

require_once ABSPATH . WPINC . '/plugin.php';

答案 2 :(得分:3)

可以利用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;
}

答案 3 :(得分:2)

您是否尝试过使用bloginfo('wpurl')/ wp-content / plugins?

答案 4 :(得分:2)

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

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

如果需要,还可以使用is_dir()进行检查并进一步遍历。