Perbedaan antara file plugin (utama) dan slug plugin adalah tempat di mana WordPress Codex dapat melakukan jauh lebih baik. Saya mengerti kebingungan Anda seperti yang saya rasakan baru-baru ini (dicampur dengan frustrasi).
Inilah yang saya pelajari dengan melakukan beberapa "pekerjaan detektif" pada kode inti WordPress.
File plugin
Ini adalah cara unik WordPress mengidentifikasi dan merekam sebuah plugin. Itu terdiri dari direktori plugin DAN file plugin utama (yang dengan header file yang berisi berbagai detail plugin seperti versi, penulis, dll.).
Akan terlihat seperti ini: your-plugin-directory/main-file.php
Jika Anda melihat data plugin aktif (dikembalikan oleh get_option( 'active_plugins' )
), Anda akan melihat bahwa WordPress hanya membutuhkan file plugin ini untuk mengidentifikasi plugin dengan benar.
Anda dapat memilih untuk menganggapnya sebagai jalur relatif file utama plugin Anda (relatif terhadap wp-content/plugins/
direktori yang ada). Anda dapat "membuat" jalur absolut dari file plugin utama dengan sesuatu seperti ini:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Inti itu sendiri menghasilkan file plugin seperti ini:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
Plugin siput
Orang akan mengharapkan plugin "slug" menjadi semacam ID standar untuk plugin seperti post slug adalah untuk posting - jadi Anda bisa menggunakan "slug" ini untuk menyediakannya ke fungsi inti WordPress dan menyelesaikannya.
Tidak juga. Setelah mencari inti untuk referensi ke siput plugin (atau tema untuk masalah apa) dan menemukan hampir tidak ada, saya pikir saya memiliki pemahaman tentang itu.
Satu-satunya siput nyata adalah untuk hal-hal yang dapat diakses melalui URL unik: posting, halaman, taksonomi, dll. Itulah inti dari mengambil nama sesuatu (seperti judul posting) dan menghasilkan versi yang ramah URL untuk itu: menggunakan itu dalam URL.
Tapi di mana kita menggunakan tema / plugin "siput" di URL?
Kami tidak melakukan itu pada instalasi WordPress individu - baik di admin WP atau frontend.
Namun, ada tempat yang sangat terjerat dengan kode WordPress, situs WordPress.org. Orang-orang mengalami kesulitan membedakan antara keduanya, termasuk bahwa itu entah bagaimana umum di antara pengembang untuk mempertimbangkan tema WordPress.org atau siput plugin harus bekerja sama dengan siput posting atau halaman.
Mereka melayani tujuan yang sama tetapi di situs web yang berbeda . Pada WordPress.org mereka digunakan untuk secara unik mengidentifikasi tema dari orang lain, dan plugin dari yang lain (di URL seperti https://wordpress.org/plugins/akismet/
).
Tetapi ketika datang ke instalasi WordPress individu , keunikan yang sama tidak dapat dijamin karena tidak ada otoritas untuk menegakkannya (seperti pada WordPress.org). Ini bisa bekerja jika semua plugin dan tema berasal dari WordPress.org, tapi untungnya bukan itu masalahnya.
Apa yang dilakukan kode WordPress dengan siput tema / plugin?
Kode inti WordPress tidak bergantung pada siput tema / plugin untuk melakukan hal-hal seperti menginstal, mengaktifkan, memperbarui, menghapus tema, atau plugin.
Untuk tema, ini bergantung pada direktori tema karena titik masuk utama ke dalam suatu tema adalah style.css
file (Anda tidak dapat menggunakan file CSS lain untuk menahan tajuk rincian tema Anda).
Untuk plugin, ia bergantung pada direktori plugin DAN file plugin utama , karena plugin dapat memanggil file utama mereka sesuka mereka.
Satu-satunya hal yang inti gunakan untuk tema / plugin adalah ketika menangani tema dan plugin dari direktori WordPress.org: mengambil daftar plugin, memeriksa pembaruan, melaporkan kembali ke data penggunaan direktori, dan sebagainya.
Untuk menyelesaikan masalah tentang siput plugin: setiap kali Anda menemukan data plugin dengan slug
entri, 99% dari waktu itu akan merujuk ke siput plugin WordPress.org.
Bagaimana cara mengidentifikasi plugin?
Jika Anda ingin secara terprogram mengaktifkan, memperbarui, menonaktifkan atau menghapus plugin tertentu pada instalasi WordPress, Anda perlu menggunakan file plugin. Anda bisa mendapatkannya seperti ini dari file utama plugin Anda:
$plugin_file = plugin_basename( __FILE__ );
Jika Anda ingin menargetkan plugin tertentu dari plugin lain, hal-hal menjadi sedikit rumit karena Anda perlu mengandalkan sedikit "tebakan".
Anda bisa membuat kode nama plugin, mencari plugin di daftar semua plugin (lihat get_plugins () ) dan dapatkan file plugin dari sana.
Jika Anda tahu kelas atau fungsi yang ditentukan oleh plugin itu, Anda bisa menggunakan refleksi (lihat jawaban ini untuk kelas dan yang ini untuk fungsi).
Saya harap ini membantu Anda dan orang lain yang mungkin kesulitan berurusan dengan "plugin slug". Itu bisa menyelamatkan saya beberapa jam :)