Dokumentasi WordPress untuk Menentukan Plugin dan Direktori Konten menyatakan bahwa:
WordPress menggunakan konstanta berikut ketika menentukan jalur ke direktori konten dan plugin. Ini tidak boleh digunakan secara langsung oleh plugin atau tema , tetapi terdaftar di sini untuk kelengkapan.
Selanjutnya ke daftar WP_CONTENT_DIR
dan di WP_PLUGIN_DIR
antara konstanta bahwa pengembang tema dan plugin tidak boleh menggunakan, mungkin karena ini:
WordPress memungkinkan pengguna untuk menempatkan direktori konten-wp di mana pun mereka inginkan, jadi Anda tidak boleh berasumsi bahwa plugin akan berada di konten-wp / plugin, atau bahwa unggahan akan berada di konten-wp / unggahan, atau bahwa tema akan ada di wp- konten / tema.
Mark Jaquith juga berkomentar di sini bahwa konstanta itu tidak boleh digunakan:
Jangan gunakan WP_PLUGIN_URL atau WP_PLUGIN_DIR - plugin mungkin tidak ada di direktori plugins.
Jadi, apa cara yang diterima untuk merujuk path lengkap ke folder plugins, konten-wp, dan tema tanpa menggunakan konstanta ini?
Sebagai contoh sederhana, untuk menampilkan path lengkap dari semua plugin yang diinstal, saya dapat melakukan ini:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
Yang menghasilkan daftar seperti ini:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Saya mungkin ingin melakukan ini jika saya sedang menulis sebuah plugin untuk memungkinkan pengguna untuk secara selektif mengarsipkan plugin sebagai bagian dari cadangan situs, misalnya.)
Jika menggunakan WP_PLUGIN_DIR
salah, apa alternatif yang disarankan? Tidak ada yang setara dengan wp_upload_dir()
untuk plugin, tema, dan folder konten-wp yang dapat saya temukan, yang membuat referensi tema yang berpotensi berkelana dan direktori root plugin bermasalah.
WP_PLUGIN_DIR
, maka pertanyaan saya di sini.Jawaban:
File referensi di jalur saat ini atau bersarang lebih dalam
Untuk referensi jalur saat ini
yang berfungsi di Plugin dan Tema .
Referensi URl / URi dalam sebuah plugin
Untuk menunjuk ke file plugin atau tema, gunakan
yang hanya berfungsi di plugin
Referensi URl / URi dalam
wp-admin
folderSelalu arahkan mereka ke
admin_url( 'some/path' );
. Adaget_admin_url()
juga.Referensi URl / Uri dalam
wp-includes
folderArahkan mereka ke
includes_url( 'some/path' );
URl / URi relatif terhadap situs beranda
Ada
home_url( 'etc' );
atauget_home_url()
untuk itu. Miripget_site_url()
dansite_url()
. Lalu ada juganetwork_home_url()
. Dan kamu punyanetwork_admin_url()
wp-content
atau direktori berganti namaAnda dapat mendefinisikan kembali
wp-content
nama folder. Oleh karena itu Anda gunakan dicontent_url()
sana.Bagaimana cara mendapatkan url folder plugins?
Cukup gunakan
plugins_url()
tanpa parameter apa pun.Jika Anda menggunakannya untuk sebuah plugin, itu berfungsi untuk plugin MU juga.
EDIT # 1 Jika Anda tertarik pada jalur ke plugin saat ini, gunakan
plugin_basename();
.EDIT # 2 Jika Anda tertarik dengan semua plugin aktif di samping, gunakan
wp_get_active_network_plugins();
.Jika Anda tidak menggunakan multisite, ikuti
wp_get_active_and_valid_plugins();
. Ini akan mempertimbangkan multisite / jaringan. Perlu diingat bahwa ini akan memperhitungkan mereka jika Anda tidak menggunakan multisite, tetapi mendapatsunrise.php
dropin.Anda juga dapat mengambilnya melalui
get_option( 'active_plugins' );
, yang tidak disarankan karena tidak mempertimbangkan filter dan validasi plugin, yang terjadi pada beberapa kesempatan.Bacaan lebih lanjut
Daftar ini terus berlanjut. Lihatlah hasil pencarian di QueryPosts.com untuk info lebih lanjut.
Artikel ini membahas secara mendalam tentang semua jalur.
sumber
plugins_url()
mengembalikan URL ke folder plugin, bukan path lengkap ke direktori di server. Apakah ada fungsi serupa untuk menangani direktori yang tidak saya sadari? Atau apakah saran untuk tidak menggunakanWP_PLUGIN_DIR
konstanta itu salah?WP_PLUGIN_DIR
.Ini mengembalikan jalur server direktori plugin saat ini:
Ref: https://codex.wordpress.org/Function_Reference/plugin_dir_path
Jangan bingung dengan:
(Perhatikan "plugin s " jamak itu.)
Karena Anda tidak ingin nama direktori plugin dikembalikan, kami harus menghapusnya. Inilah fungsi yang mengembalikan direktori plugin dan nama file:
Tapi tentu saja kami juga tidak ingin nama file plugin, jadi kami harus menghapusnya
plugin_basename(__FILE__)
terlebih dahulu. Untuk mengembalikan nama file plugin:Jadi untuk menggunakan ini untuk membangun jalur ke direktori plugin , kita dapat menggunakan
str_replace()
fungsi seperti ini:Dan jika diperlukan, baris terakhir itu tentu saja dapat ditugaskan ke variabel, untuk digunakan berulang.
Dari pada:
Gunakan sesuatu seperti:
Dan kemudian, saat dibutuhkan:
sumber