Dapatkan direktori plugin dari suatu tema

8

Adakah yang tahu cara non-hacky untuk mendapatkan jalur direktori plugin dari dalam functions.php tema?

Saya telah menggunakan plugin_dir_path ( FILE ), tetapi karena dipanggil dalam theme. functions.php itu mengembalikan path ke file itu. Bukan direktori plugin. Saya bisa memanipulasi string dan menambahkan path plugin, tapi rasanya hampir sama buruknya dengan hardcoding seluruh path.

Saya sudah membuatnya bekerja menggunakan:

require_once( ABSPATH .'/wp-content/plugins/ehu-events/event-widget.php' );

Tapi saya tahu itu sangat kuno dan salah dan saya mungkin akan dijauhi dari komunitas wordpress karena menggunakannya!

Apakah ada fungsi wordpress standar yang dapat saya gunakan untuk ini?

danbrown
sumber

Jawaban:

18

Mungkin yang Anda cari adalah:

WP_PLUGIN_DIR  // full path, no trailing slash
WP_PLUGIN_URL  // full url, no trailing slash

Lihat dokumentasi

JMau
sumber
1
Ingatlah bahwa ada filter yang mungkin memindahkan lokasi ke tempat lain. Ini mungkin taruhan terbaik, tapi itu pasti bukan asumsi yang menyelamatkan.
kaiser
2
Dokumentasi tertaut mengatakan hal berikut tentang konstanta: «Ini tidak boleh digunakan langsung oleh plugin atau tema, tetapi terdaftar di sini untuk kelengkapan.» Jadi mungkin sebaiknya tidak disarankan sebagai solusi, ketika sarannya adalah untuk tidak menggunakannya dalam tema Anda.
Gchtr
8

Saya percaya ini mungkin lebih dapat diandalkan daripada bergantung pada konstanta.

$url = plugins_url();
$path = parse_url($url);
var_dump($path['path']);

Alasan saya menduga mungkin lebih dapat diandalkan adalah bahwa plugins_urlfungsi menganggap baik WPMU_PLUGIN_URLdan WP_PLUGIN_URLkonstanta dan juga akan menghormati plugins_urlfilter.

s_ha_dum
sumber
1
Ini adalah metode paling non-hacky dan itu harus menjadi jawaban terbaik.
CGeorges
bagaimana dengan plugin yang terdapat dalam tema?
brett