Cara Menambahkan Dukungan WP-CLI ke Semua Plugin WordPress

Diterbitkan: 2018-08-14

Menyesuaikan plugin dengan kebutuhan pengguna adalah salah satu agenda utama yang harus diikuti oleh setiap pemilik plugin. Untuk penggeser halaman depan yang berarti lebih banyak pemilih warna, font, dan opsi visual serupa. Namun, jika Anda melayani pengembang, admin, dan pengguna lain cepat atau lambat, mereka akan membutuhkan dukungan CLI. Mereka ingin membuang mouse dan hanya bekerja dengan keyboard. Berkat proyek WP-CLI menambahkan dukungan CLI ke plugin Anda adalah hal yang mudah.

Dengan menambahkan dukungan @wpcli ke plugin #WordPress Anda, Anda akan membukanya untuk developer, power-user, dan admin.

KLIK UNTUK TWEET

Pertarungan GUI vs CLI abadi

Mari kita selesaikan sesuatu: GUI (Graphical User Interface) tidak lebih baik dari CLI (Command Line Interface) dan sebaliknya: CLI tidak lebih baik dari GUI. Orang-orang lebih suka satu dari yang lain. Ini masalah preferensi atau kebiasaan pribadi. "Apakah mereka sama, apakah mereka dapat dipertukarkan?" Dengan beberapa kompromi, ya bisa, tetapi, tidak ada yang suka memilih warna dalam antarmuka baris perintah hitam & putih. Itu hanya kontraproduktif. Mereka masing-masing melayani tujuan khusus.

“Jadi mengapa kita membutuhkan keduanya? Bukankah WP lebih berorientasi GUI?” Memang, WP lebih berorientasi GUI. Tapi tidak untuk semua pengguna. Beberapa orang menggunakan WP dengan cara yang lebih cocok untuk CLI, dan memungkinkan mereka untuk bekerja lebih cepat dengannya. Selain itu, mengapa tidak memiliki keduanya? Itu tidak mengasapi apa pun atau menghalangi.

Jadi, WP-CLI adalah sebuah plugin, bukan?

Tidak, ini bukan plugin. Anda tidak perlu menambahkan apa pun ke instalasi WordPress agar WP-CLI berfungsi. Anda hanya perlu WP-CLI di OS Anda. WP-CLI ditulis dalam PHP dan dikemas dalam file phar. Ini adalah cara untuk menempatkan seluruh aplikasi PHP ke dalam satu file, "phar" (PHP Archive) untuk distribusi dan instalasi yang mudah di berbagai OS. Proses instalasi tergantung pada sistem operasi Anda, tetapi mudah dan didokumentasikan dengan baik di buku pegangan WP-CLI – atau jika Anda lebih menyukai video, inilah salah satu instalasi WP-CLI di Windows.

Saya tidak akan mengulangi materi di atas. Ini cukup detail dan akan membuat Anda menggunakan WP-CLI dalam hitungan menit. Saat Anda menjalankannya, ubah direktori kerja Anda ke instalasi WP yang Anda rencanakan untuk digunakan dan jalankan wp option get home untuk memastikan Anda berada di instalasi WP yang benar dan WP-CLI berfungsi.

Bekerja dengan WP-CLI di Windows 10 – Keluaran untuk perintah “info situs” khusus kami

Ini lebih sederhana dari yang terlihat

Pertama, kita memerlukan fungsi untuk memberi tahu kita apakah pengguna berinteraksi dengan WP melalui CLI atau tidak. Ini berguna untuk banyak hal seperti tidak mengirim header HTTP apa pun saat berada di CLI dan untuk tidak menyertakan fungsi CLI pada panggilan "biasa". Ini juga memberi kita kesempatan untuk menggunakan kembali fungsi lama yang awalnya ditulis untuk GUI hanya dengan beberapa perubahan kecil.

function is_cli_running() {
  return defined( 'WP_CLI' ) && WP_CLI;
}

Langkah selanjutnya adalah mencari tahu nama untuk perintah CLI Anda. Ada sekitar 40 perintah bawaan. Jadi Anda tidak dapat menggunakan nama-nama itu, dan Anda harus menghindari nama merek apa pun seperti "google" karena Anda mungkin bukan pemilik Google. Idealnya, itu harus menjadi nama plugin Anda atau nama payung untuk serangkaian fungsi yang dilakukannya sehingga Anda dapat meletakkan semua perintah di bawahnya dalam upaya untuk tidak mencemari namespace utama. Ini masuk akal, seperti halnya dengan bagian kode apa pun. Mari gunakan site-info dan kami akan membuat beberapa fungsi yang mengembalikan berbagai informasi tentang situs.

Untuk menjaga semuanya tetap rapi dan rapi, masukkan semua kode terkait WP-CLI ke dalam file baru – custom-wp-cli-commands.php . Kami hanya akan menyertakan file itu saat dibutuhkan dan saat semua kode terkait CLI tersedia. Untuk itu, kita akan menggunakan fungsi yang baru saja kita buat. Demi pengujian dan pembelajaran, letakkan file di folder tema aktif Anda dan kemudian tambahkan ini ke file functions.php tema.

if ( is_cli_running() ) {
  require_once 'custom-wp-cli-commands.php';
}

Kemudian, letakkan ini di custom-wp-cli-commands.php ;

/**
 * Just a few sample commands to learn how WP-CLI works
 */
class cli_site_info extends WP_CLI_Command {
  /**
   * Display version information.
   * ## OPTIONS
   *
   * [--wponly]
   * : Shows only WP version info, omitting the plugin one.
   */
  function version( $args, $assoc_args ) {
    if ( !empty( $assoc_args['wponly'] ) ) {
      WP_CLI::line( 'Version of WordPress is ' . get_bloginfo( 'version' ) . '.' );
    } else {
      WP_CLI::line( 'Version of this plugin is 0.1-beta, and version of WordPress ' . get_bloginfo( 'version' ) . '.' );
    }
  }
    
    
  /**
   * Display the number of plugins.
   */
  function plugins() {
    WP_CLI::line( 'There are a total of ' . sizeof( get_plugins() ) . ' plugins on this site.' );
  }
}

WP_CLI::add_command( 'site-info', 'cli_site_info' );

Jika Anda membuka situs, beranda atau admin, di browser tidak akan terjadi apa-apa. Bagus. Untuk menguji perintah CLI baru kembali ke jendela baris perintah Anda, jalankan wp site-info version dan Anda akan mendapatkan plugin dan versi situs. Atau jalankan wp site-info plugins dan Anda akan mendapatkan jumlah total plugin di situs tersebut. Mudah, bukan? Mari kita bahas kodenya.

Semudah memperluas kelas PHP

cli_site_info kelas kami memperluas kelas WP_CLI_Command ; tidak ada yang mewah di sana. Anda dapat memanggil kelas apa pun yang Anda suka. Yang penting adalah kode pada baris terakhir file – WP_CLI::add_command( 'site-info', 'cli_site_info' ) . Itu mendaftarkan perintah tingkat atas kami dan mengikat kelas kami dengannya. Jika Anda ingin mengubah perintah site-info menjadi sesuatu yang lain, ini adalah tempat untuk melakukannya.

Setiap metode publik (fungsi) di kelas adalah sub-perintah di WP-CLI. Pastikan untuk memeriksa anatomi perintah untuk mempelajari istilah WP-CLI yang tepat. Tidak perlu untuk "mendaftarkan" metode di mana saja atau melakukan sesuatu yang ekstra. Seperti yang kami lakukan untuk plugins() dan version() – buat fungsi standar, dan hanya itu. WP-CLI akan tahu apa yang harus dilakukan dengannya.

Setelah Anda berada dalam metode ini, Anda dapat menjalankan kode apa pun yang Anda butuhkan. Berinteraksi dengan CLI, bagaimanapun, akan memerlukan beberapa fungsi khusus karena hal-hal seperti echo tidak akan berfungsi seperti yang diharapkan. Alih-alih echo ada WP_CLI::line() . WP-CLI API internal mencakup semua yang Anda butuhkan dan semua fungsi didokumentasikan dengan baik serta dipisahkan ke dalam input, output, misc, sistem, dan kategori lainnya yang membuatnya sangat mudah ditemukan.

Selain mencetak teks, Anda mungkin ingin menggunakan argumen perintah (asosiatif) sehingga Anda dapat memanggil hal-hal seperti wp site-info version --wponly (cobalah) yang hanya menampilkan info versi WP. Argumen asosiatif disimpan dalam argumen fungsi kedua metode. Dalam kasus kami ini disebut $assoc_args . Satu-satunya yang tersisa adalah menguji kunci array untuk nilai tertentu dan menyesuaikan kode yang sesuai, seperti yang kita lakukan di function version( $args, $assoc_args ) .

Dokumentasi dan bantuan dalam CLI

WP-CLI memiliki sistem bantuan bawaan. Ini cukup berguna. Tidak pernah ada kebutuhan untuk dokumentasi eksternal untuk sebuah perintah jika pengembang menginvestasikan sedikit waktu untuk menjelaskan perintah dalam kodenya. Dokumentasi tidak akan menulis sendiri (sayangnya) tetapi jika Anda menginvestasikan minimal saat membuat perintah Anda, pengguna akan sangat berterima kasih karena Anda akan meletakkan semua dokumen di bawah satu atap.

Anda menulis dokumen di kelas Anda sebagai komentar, menggunakan format PHPDoc. Untuk menggali lebih dalam, lihat Buku Pegangan CLI. Dengan menjalankan wp help site-info Anda akan mendapatkan daftar dan deskripsi dari perintah-perintah kami, dan jika Anda melihat kodenya, Anda akan melihat dari mana asalnya. Sangat jelas. Untuk detail lebih lanjut tentang subcommand versi, jalankan wp help site-info version dan Anda juga akan mendapatkan detail tentang opsi.

Meskipun tidak digunakan oleh banyak orang, @wpcli sering digunakan oleh mereka yang membentuk masa depan #WordPress & pendapat banyak pengguna. Menambahkan CLI ke plugin Anda mungkin merupakan langkah yang cerdas

KLIK UNTUK TWEET

Buat pengguna Anda senang

Tentu, jika Anda mengembangkan widget cuaca, menambahkan dukungan WP-CLI sepertinya bukan langkah yang tepat. Namun, alat apa pun yang digunakan oleh pengembang dan admin keras seperti WP Reset akan sangat diuntungkan dari WP-CLI. Pengguna akan dapat mengatur perintah, menulis skrip bash dan umumnya menyelesaikan lebih banyak hal dengan lebih cepat dan lebih mudah. Itu mengarah ke ulasan yang lebih baik, pengguna yang lebih bahagia, lebih banyak pengguna, dan pada akhirnya lebih banyak uang untuk Anda, terlepas dari model monetisasi yang Anda miliki.