开发者

how to get wp include directory?

开发者 https://www.devze.com 2023-03-09 09:54 出处:网络
I need to do require_once for my wp plugin development. It seems to me that I need to use absolute path.

I need to do require_once for my wp plugin development. It seems to me that I need to use absolute path.

my current solution is

$delimiter = strpos(dirname(__FILE__), "/")!==false?"/":"\\"; //win or unix?
$path = explode($delimiter,  dirname(__FILE__));

require_once join(array_slice($path,0,count($path)-3),$del开发者_JAVA百科imiter) . "/wp-admin/includes/plugin.php"; 

I wonder if there is a better way to handle this, kind of general approach.

What if the wp plugin directory structure changes. So this part count($path)-3 won't be valid any more ....


WordPress establishes the path to the includes directory on startup.

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


Try:

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

Or replace __DIR__ with dirname(__FILE__) if you are on < PHP 5.3

Or you could try:

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


Its possible to take advantage of WP_CONTENT_DIR and make a nice constant

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

or a function

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


Have you tried doing bloginfo('wpurl') / wp-content/plugins ?


I used to define it as a constant, like the others ...

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

One still could check with is_dir() and traverse further, if required.

0

精彩评论

暂无评论...
验证码 换一张
取 消