Ini dia:
Daftar HTML dengan semua file templat yang digunakan untuk halaman arahan saat ini, termasuk semua templat-bagian dari plugin, tema anak dan / atau kombinasi tema induk , semuanya dalam satu baris kode:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Anda MUNGKIN perlu memeriksa bahwa server Anda tidak mengembalikan garis miring dubble di jalur apa pun . Ingatlah untuk menempatkan ini setelah semua file template benar-benar digunakan, seperti di footer.php, tetapi sebelum admin bar merender .
jika admin-bar stuff
path ditampilkan di bagian atas, atau file lain, ubah nama file template-loader.php
pada baris kode ini menjadi: apa pun nama file yang harus Anda hentikan. Sering:class-wp-admin-bar.php
jika Anda memerlukan ini di bilah admin, gunakan priotity yang tepat (paling awal) untuk membuat shure tidak ada file yang dimasukkan pada akhir daftar ini. Sebagai contoh:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
prioritas -5
membuat shure itu dimuat terlebih dahulu. Kuncinya adalah memanggil get_included_files()
pada saat yang tepat, jika tidak diperlukan beberapa array-popping!
Untuk memecah ini:
Anda tidak dapat mengumpulkan semua file template yang disertakan tanpa PHP backtrace. Superglobals di dalamnya template_include
tidak akan mengumpulkan semuanya . Cara lain adalah dengan "menempatkan penanda" di setiap file template, tetapi jika Anda perlu berinteraksi dengan file terlebih dahulu, Anda hazzle dengan waktu dan seluruh ide.
1) Kita perlu memeriksa di dalam semua file yang telah digunakan oleh permintaan Wordpress saat ini. Dan mereka banyak! Jangan kaget jika Anda menggunakan 300 file bahkan sebelum functions.php Anda terdaftar.
$included_files = str_replace('\\', '/', get_included_files());
Kami menggunakan get_included_files () PHP asli, mengonversi backslash untuk meneruskan garis miring untuk mencocokkan sebagian besar jalur pengembalian Wordpress.
2) Kami memotong array dari tempat templat-loader.php terdaftar. Setelah itu, get_included_files () yang terisi hanya akan memiliki file template yang terisi.
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) Persingkat hasilnya, kita tidak perlu path sampai folder tema atau folder plugin, sebagai template yang digunakan, dapat dicampur dari plugins, tema atau folder tema anak.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Akhirnya, konversikan dari array ke daftar HTML yang bagus
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Modifikasi terakhir mungkin diperlukan di part3) -pengganti , jika Anda tidak ingin menyertakan oleh plugin. Mereka mungkin menelepon class-files
terlambat, dan "mencegat" selama pemrosesan output template.
Namun, saya merasa masuk akal untuk membiarkan mereka terlihat, karena idenya adalah untuk melacak apa yang telah dimuat , bahkan jika itu bukan "template" yang memberikan output pada tahap ini.