Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get wp include directory?

Tags:

php

wordpress

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),$delimiter) . "/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 ....

like image 242
Radek Avatar asked Jun 01 '11 01:06

Radek


3 Answers

WordPress establishes the path to the includes directory on startup.

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

like image 71
Benjamin J. Balter Avatar answered Sep 21 '22 12:09

Benjamin J. Balter


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';
like image 43
Petah Avatar answered Sep 21 '22 12:09

Petah


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;
}
like image 42
Ohmicron Avatar answered Sep 21 '22 12:09

Ohmicron