Saya bertanya-tanya bagaimana saya bisa menemukan siput plugin (siput = nama internal yang digunakan oleh WordPress untuk melakukan pembaruan plugin dan untuk menentukan plugin mana yang sedang aktif)? Biasanya nama folder plugin tetapi jika plugin tidak memiliki folder, itu adalah nama file-nya (seperti hello.php). Apakah ada pengecualian lain?
- Apakah huruf kecil dan huruf besar penting?
- Bisakah plugin memiliki siput yang berbeda dari nama foldernya? Bagaimana jika ada plugin bernama hello.php dan /hello.php/hello.php?
Jawaban:
String yang digunakan di WordPress untuk mengidentifikasi plugin adalah:
... di mana
$file
adalah file dengan header Plugin .Jadi jika Anda berada di plugin Anda, dapatkan siput dengan:
sumber
dirname(plugin_basename(__FILE__))
.Jika Anda menginstal WP-CLI maka Anda bisa mendapatkan daftar plugin dengan slug dan versinya dari baris perintah:
> wp plugin list
Saya tahu itu mungkin bukan yang Anda inginkan, jika Anda perlu menemukan kode siput, tetapi telah membantu saya saat bekerja dengan plugin TGM-Plugin-Activation.
Saya merasa sulit untuk bekerja dengan WordPress tanpa WP-CLI, secara umum ini adalah alat yang sangat berguna untuk banyak tugas umum yang terkait dengan WordPress.
sumber
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 :)
sumber
Hanya mengklarifikasi sejak posting asli.
Cara saya menemukan plugin slug adalah dengan pertama-tama menavigasi ke folder plugin Anda kemudian membuka folder yang terkait dengan plugin, dan akhirnya menemukan file yang menampung kode di bawah ini. Setelah Anda menemukan file ini, nama file minus ekstensi harus menjadi plugin slug Anda.
Sebagai contoh jika saya menemukan kode di bawah ini dalam file bernama advanced-plugin-awesomeness.php siput saya akan maju-plugin-kedahsyatan.
Semoga ini membantu!
sumber
Sayangnya siput dikembalikan melalui API Pembaruan, jawaban untuk pertanyaan ini tidak begitu jelas kecuali jika Anda menanyakan API itu sendiri. Namun, jika Anda ingin melihat daftar siput plugin Anda saat ini dan data plugin terkait, Anda cukup melakukannya:
Tapi, ini tidak akan memiliki info tentang plugin yang baru diinstal selama 12 jam, Anda harus melakukan sesuatu yang berbeda untuk mereka, misalnya. gunakan versi kode yang dimodifikasi dari
wp_update_plugins
dalamwp-includes/update.php
...Setelah melakukan ini untuk mengujinya, tampaknya mengkonfirmasi bahwa, terlepas dari nama file plugin atau lokasi atau huruf besar, sebenarnya
Plugin Name
yang menghasilkan pembaruan slug, kemungkinan besar melaluisanitize_title
. Jadi saya percaya jawaban yang benar adalah:sumber
Anda bisa mendapatkan nama folder plugin (PHP5.3 +) dengan mengirimkan DIR ke plugin_basename (), seperti:
sumber
Coba ini:
sumber
Untuk sebagian besar plugin, "slug" akan sama dengan nama direktori. Meskipun orang .org dapat mengatur nama direktori untuk apa pun yang mereka inginkan.
sumber