Cara Mengunduh, Menginstal, Mengaktifkan & Mengganti Plugin WordPress Secara Terprogram & Otomatis
Diterbitkan: 2018-09-18Membuat pengguna melakukan apa pun itu sulit. Baik itu mengisi formulir atau hanya melakukan beberapa klik – ada resistensi yang melekat. Bahkan jika tindakan itu untuk kebaikan pengguna, seperti mengubah kata sandi yang lemah, mereka tidak akan melakukannya. Hal yang sama berlaku untuk membuat pengguna menginstal plugin yang diperlukan, atau lebih buruk lagi, mengganti plugin aktif dengan yang baru. Ini misi perbatasan yang mustahil.
Untungnya, dengan sedikit kode dan persetujuan pengguna, kita dapat mengunduh, menginstal, mengaktifkan, menonaktifkan, dan bahkan menghapus plugin WordPress. Proses otomatis ini, ketika diterapkan secara bertanggung jawab, dapat secara drastis meningkatkan pengalaman pengguna dan meningkatkan tingkat konversi untuk tindakan pengguna yang diperlukan di admin WordPress.
Membuat pengguna melakukan apa pun itu sulit. Jadi mengapa tidak mengunduh, menginstal & mengaktifkan plugin #WordPress secara otomatis? Hanya membutuhkan beberapa baris kode.
KLIK UNTUK TWEETMengapa mengunduh, menginstal & mengaktifkan plugin melalui kode?
Ada beberapa skenario tetapi selain teori, mari kita lihat situasi yang dihadapi WP Reset. Saya sudah menulis posting tentang rebranding reset-wp menjadi WP Reset. Selain hal-hal lain, prosesnya melibatkan membuat orang yang sudah menggunakan reset-wp untuk menghapusnya dari situs mereka dan kemudian menginstal WP Reset. Mengapa seseorang melakukan itu hanya karena kami bertanya? Dan bahkan jika mereka ingin melakukannya, mereka akan enggan karena jauh dari dua klik. Namun, jika kami menjelaskan semuanya dan membuatnya menjadi satu tombol "Ya, silakan, ganti reset-wp dengan Reset WP," maka semuanya tidak terlihat buruk.
Jangan main-main dengan situs orang tanpa izin mereka! Periode. Bahkan jika itu "hal kecil." Itu tidak keren. Ini bukan situs Anda. Beri tahu pengguna tentang perubahan apa pun saat mereka memperbarui plugin, atau saat Anda menambahkan fitur baru.
Karena aturan wp.org yang mencegah kami melacak tindakan pengguna (tanpa persetujuan mereka, dan kami tidak ingin mengganggu mereka dengan bertanya), sayangnya, saya tidak punya nomor untuk dibagikan. Namun yang dapat saya sampaikan kepada Anda adalah bahwa kami tidak menerima keluhan dari pengguna reset-wp yang melalui proses penggantian, atau hanya melihat pemberitahuan di plugin. Dan kami telah menjalankan prosesnya selama lebih dari tujuh minggu.
Apakah boleh melakukan ini? Apakah pengguna akan keberatan?
Pengguna pasti akan keberatan dengan apa pun dan semua yang Anda lakukan di belakang mereka! Jangan lakukan itu! Jangan melakukan apa pun tanpa izin pengguna. Apalagi jika plugin tersebut dihosting di wp.org karena itu melanggar aturan. Jika Anda melakukannya, admin akan segera menghapus plugin Anda dari repositori.
Tapi, jika Anda meminta izin – “Bisakah kita mengganti plugin A dengan plugin B? Mohon konfirmasi.” Maka tidak apa-apa untuk melakukannya. Proses menonaktifkan dan menghapus satu plugin, serta mengunduh dan mengaktifkan yang lain membutuhkan lebih dari beberapa klik. Jadi, jika Anda berhasil mengotomatiskan proses itu, dan menguranginya menjadi satu klik, pengguna akan senang.
Proses serupa untuk mengaktifkan plugin yang diperlukan untuk tema telah dimainkan selama bertahun-tahun, dan pengguna setuju dengan itu. Alih-alih mengikuti beberapa tautan untuk menginstal plugin, mereka mengonfirmasi bahwa mereka baik-baik saja dengan prosesnya dan beberapa plugin diinstal dalam satu klik.
Seperti biasa, sangat sedikit kode yang dibutuhkan
Dalam kode semu, ini adalah gagasan umum tentang apa yang ingin kita lakukan:
// pseudo code only! // DO NOT copy & paste var $old_plugin; var $new_plugin; if ( is_plugin_installed( $new_plugin ) ) { // new plugin is already installed // make sure we have the last version upgrade_plugin( $new_plugin ); } else { install_plugin( $new_plugin ); } if ( !is_plugin_active( $new_plugin ) ) { // new plugin is not active - activate it activate_plugin( $new_plugin ); } // deactivate old plugin deactivate_plugin( $old_plugin ); // if needed delete old plugin delete_plugin( $old_plugin ); // pseudo code only! // DO NOT copy & paste
Ini cukup sederhana dan mudah. Selama pengguna memiliki hak akses file yang tepat, semuanya akan berjalan lancar. Seluruh penggantian tidak memakan waktu lebih dari satu atau dua detik untuk diselesaikan.
Kami membutuhkan beberapa fungsi
Untungnya WordPress memiliki sebagian besar fungsi yang perlu kita lakukan atau setengah jadi, jadi ini adalah masalah menyatukan semuanya.
Konsep penting untuk dipahami adalah bagaimana WordPress mengidentifikasi sebuah plugin, bagaimana ia mengetahui plugin mana. Itu dilakukan dengan plugin slug – kombinasi nama folder plugin dan file PHP utama. Misalnya: hello-dolly/hello-dolly.php. File PHP utama adalah file dengan header plugin. Untuk mendapatkan slug jalankan plugin_basename( __FILE__ )
. Kapan pun Anda harus memeriksa apakah sebuah plugin aktif atau ingin melakukan sesuatu dengannya, Anda perlu menggunakan plugin slug. Siput ini mirip tetapi tidak sama dengan siput dari wp.org. Di repositori, slug hanyalah nama folder, tanpa nama file. Jadi, untuk Hello Dolly itu adalah "hello-dolly." Kami tidak membutuhkan itu saat ini, tetapi itu perlu diklarifikasi. Untuk bacaan yang lebih mendalam tentang topik yang agak membingungkan ini, lihat utas ini di Stack Exchange.
WordPress mengidentifikasi plugin berdasarkan slugnya, yaitu hello-dolly/hello-dolly.php. Untuk mendapatkan slug run plugin_basename( __FILE__ )
di file utama plugin.
is_plugin_active( $plugin_slug )
sudah ada di dalamnya sehingga tidak ada yang bisa kita lakukan. Halaman Codex tidak mengungkapkan banyak tambahan, ini adalah fungsi yang sederhana.
is_plugin_installed( $plugin_slug )
tidak ada di dalamnya, tetapi hanya beberapa baris untuk dikodekan.
function is_plugin_installed( $slug ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = get_plugins(); if ( !empty( $all_plugins[$slug] ) ) { return true; } else { return false; } }
Itu semua adalah fungsi pengujian bersyarat yang kita butuhkan. Sekarang untuk orang-orang yang melakukan sesuatu. activate_plugin( )
sudah ada di dalamnya dan memiliki empat parameter, jadi periksa halaman Codex tentangnya.
deactivate_plugins( $plugin_slug )
juga tersedia, tetapi pastikan untuk mencatat "s" (jamak) pada nama fungsi. Itu juga memiliki beberapa parameter jadi baca halaman Codex.
install_plugin( $plugin_zip )
tersedia sebagai bagian dari kelas Plugin_Upgrader
. Tidak perlu kode tambahan apa pun, cukup instance kelas baru. Hal yang sama berlaku untuk upgrade_plugin( $plugin_slug )
.
function install_plugin( $plugin_zip ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $installed = $upgrader->install( $plugin_zip ); return $installed; } function upgrade_plugin( $plugin_slug ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $upgraded = $upgrader->upgrade( $plugin_slug ); return $upgraded; }
wp_cache_flush()
mungkin tidak diperlukan tetapi saya menambahkannya agar aman. Selain hal-hal yang membutuhkan waktu 10 ms lebih lama untuk dijalankan, tidak ada salahnya.
Menyatukan semuanya
Jika Anda membaca artikel ini bukan karena penasaran, tetapi karena kebutuhan nyata untuk menerapkan kode dalam sebuah plugin, saya sangat menyarankan untuk menginstal plugin reset-wp. Membaca tentang kode itu bagus, tetapi tidak ada yang sebanding dengan pengujian di alam liar.
Preferensi saya adalah menggunakan admin_action untuk hampir semua hal yang tidak memerlukan GUI admin lengkap. Jadi, tambahkan ini ke fungsi di mana tindakan dan filter lain ditambahkan: add_action( 'admin_action_replace_plugin', 'replace_plugin' );
. Ketika pengguna membuka admin.php?action=replace_plugin kode kita akan berjalan. Tolong jangan hardcode URL itu. Gunakan sesuatu seperti: $url = add_query_arg(array('action' => 'replace_plugin'), admin_url('admin.php'));
. Ini berbicara banyak tentang kualitas kode Anda.
Berikut kode yang dapat Anda salin/tempel. Jelas, ubah tiga variabel di atas dengan nilai Anda.
function replace_plugin() { // modify these variables with your new/old plugin values $plugin_slug = 'wp-reset/wp-reset.php'; $plugin_zip = 'https://downloads.wordpress.org/plugin/wp-reset.latest-stable.zip'; $old_plugin_slug = 'reset-wp/reset-wp.php'; echo 'If things are not done in a minute <a href="plugins.php">click here to return to Plugins page</a><br><br>'; echo 'Starting ...<br><br>'; echo 'Check if new plugin is already installed - '; if ( is_plugin_installed( $plugin_slug ) ) { echo 'it\'s installed! Making sure it\'s the latest version.'; upgrade_plugin( $plugin_slug ); $installed = true; } else { echo 'it\'s not installed. Installing.'; $installed = install_plugin( $plugin_zip ); } if ( !is_wp_error( $installed ) && $installed ) { echo 'Activating new plugin.'; $activate = activate_plugin( $plugin_slug ); if ( is_null($activate) ) { echo '<br>Deactivating old plugin.<br>'; deactivate_plugins( array( $old_plugin_slug ) ); echo '<br>Done! Everything went smooth.'; } } else { echo 'Could not install the new plugin.'; } } function is_plugin_installed( $slug ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = get_plugins(); if ( !empty( $all_plugins[$slug] ) ) { return true; } else { return false; } } function install_plugin( $plugin_zip ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $installed = $upgrader->install( $plugin_zip ); return $installed; } function upgrade_plugin( $plugin_slug ) { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; wp_cache_flush(); $upgrader = new Plugin_Upgrader(); $upgraded = $upgrader->upgrade( $plugin_slug ); return $upgraded; }
Kode menggunakan semua yang telah kita diskusikan. GUI dan pesan sangat mendasar jadi tambahkan sedikit CSS atau muat URL di lightbox seperti yang kita lakukan di reset-wp.
Secara otomatis melakukan tugas-tugas biasa yang membosankan bagi pengguna selalu merupakan nilai tambah yang besar untuk #UX. Lihat bagaimana Anda dapat dengan mudah mengunduh, menginstal & mengaktifkan beberapa plugin #WordPress dengan satu klik.
KLIK UNTUK TWEETSatu klik selalu lebih baik daripada sepuluh
Memiliki pengguna mengklik sekali, bukan sepuluh kali selalu merupakan hal yang positif! Ini pertanda UX (pengalaman pengguna) yang baik. Jadi, jika plugin atau tema Anda memerlukan plugin lain, saya sarankan untuk menerapkan prosedur instalasi sekali klik untuk semua dependensi. Anda pasti akan mendapatkan lebih sedikit tiket dukungan dari orang-orang di tahap awal penggunaan plugin.
Untuk mengganti satu plugin dengan yang lain – cobalah untuk menghindari situasi tersebut. Terkadang itu tidak dapat dihindari, tetapi masalahnya adalah Anda tidak akan pernah membuat semua pengguna beralih ke plugin baru yang berarti Anda harus mendukung dua plugin atau mengabaikan dan mengecewakan sebagian dari basis pengguna Anda yang terus menggunakan plugin lama. Kami menghadapi keputusan yang sama dengan reset-wp dan tidak menyukai salah satu dari dua solusi tersebut