我需要为我的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
将不再有效....
答案 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()
进行检查并进一步遍历。