我需要为我的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()
进行检查并进一步遍历。