Herhangi Bir WordPress Eklentisine WP-CLI Desteği Nasıl Eklenir

Yayınlanan: 2018-08-14

Bir eklentiyi kullanıcının ihtiyaçlarına göre ayarlamak, her eklenti sahibinin takip etmesi gereken ana gündemlerden biridir. Daha fazla renk seçici, yazı tipi ve benzer görsel seçenekler anlamına gelen bir ön sayfa kaydırıcısı için. Ancak, geliştiricilere, yöneticilere ve diğer ileri düzey kullanıcılara er ya da geç hizmet veriyorsanız, CLI desteği isteyeceklerdir. Fareyi bir kenara bırakıp yalnızca klavyeyle çalışmak isteyeceklerdir. WP-CLI projesi sayesinde eklentinize CLI desteği eklemek çocuk oyuncağıdır.

#WordPress eklentinize @wpcli desteği ekleyerek onu geliştiricilere, uzman kullanıcılara ve yöneticilere açacaksınız.

TWEET İÇİN TIKLAYIN

Ebedi GUI ve CLI savaşı

Bir şeyi aradan çıkaralım: GUI (Grafik Kullanıcı Arayüzü), CLI'den (Komut Satırı Arayüzü) daha iyi değildir ve tam tersi: CLI, GUI'den daha iyi değildir. İnsanlar birini diğerine tercih ediyor. Bu kişisel tercih veya alışkanlık meselesidir. “Aynı mı, değiştirilebilirler mi?” Bazı tavizlerle, evet olabilirler, ancak kimse siyah beyaz bir komut satırı arayüzünde renk seçmeyi sevmez. Bu sadece ters etkidir. Her biri özel bir amaca hizmet eder.

"Öyleyse neden ikisine de ihtiyacımız var? WP daha çok GUI odaklı değil mi?” Öyle, WP daha GUI odaklı. Ancak tüm kullanıcılar için değil. Bazı insanlar WP'yi CLI için daha uygun bir şekilde kullanır ve onunla çok daha hızlı çalışmalarını sağlar. Ayrıca, neden ikisi de olmasın? Hiçbir şeyi şişirmez veya engellemez.

Yani WP-CLI bir eklenti değil mi?

Hayır, bu bir eklenti değil. WP-CLI'nin çalışması için bir WordPress kurulumuna herhangi bir şey eklemeniz gerekmez. İşletim sisteminizde yalnızca WP-CLI'ye ihtiyacınız var. WP-CLI, PHP ile yazılmıştır ve bir phar içinde paketlenmiştir. Tüm bir PHP uygulamasını tek bir dosyaya, çeşitli işletim sistemlerinde kolay dağıtım ve kurulum için bir "phar" (PHP Arşivi) içine koymanın bir yolu. Yükleme işlemi işletim sisteminize bağlıdır, ancak kolay ve WP-CLI el kitabında ayrıntılı olarak belgelenmiştir – veya videolarla daha çok ilgileniyorsanız, Windows'ta WP-CLI yüklemelerinden biri burada.

Yukarıdaki malzemelerin hiçbirini tekrar etmeyeceğim. Yeterince ayrıntılıdır ve birkaç dakika içinde WP-CLI ile başlamanızı sağlamalıdır. Çalıştırdığınızda, doğru WP kurulumunda olduğunuzdan ve WP-CLI'nin çalıştığından emin olmak için çalışma dizininizi birlikte çalışmayı planladığınız WP kurulumuna değiştirin ve wp option get home çalıştırın.

Windows 10'da WP-CLI ile çalışma - Özel "site bilgisi" komutlarımız için çıktı

Göründüğünden daha basit

İlk olarak, kullanıcının WP ile CLI aracılığıyla etkileşime girip girmediğini bize bildirecek bir fonksiyona ihtiyacımız var. CLI'deyken herhangi bir HTTP başlığı göndermemek ve "normal" çağrılara CLI işlevlerini dahil etmemek gibi birçok şey için kullanışlıdır. Ayrıca bize GUI için orijinal olarak yazılmış eski işlevleri sadece bazı küçük değişikliklerle yeniden kullanma fırsatı verir.

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

Sonraki adım, CLI komutunuz için bir ad bulmaktır. Yaklaşık 40 yerleşik komut vardır. Dolayısıyla bu adların hiçbirini kullanamazsınız ve muhtemelen Google'ın sahibi olmadığınız için "google" gibi marka adlarından uzak durmalısınız. İdeal olarak, eklentinizin adı veya yaptığı bir dizi işlev için bir şemsiye adı olmalıdır, böylece ana ad alanını kirletmemek için tüm komutları bunun altına koyabilirsiniz. Herhangi bir kod parçasında olduğu gibi, sağduyudur. site-info kullanalım ve site hakkında çeşitli bilgiler döndüren birkaç işlev yapalım.

İşleri düzenli ve düzenli tutmak için WP-CLI ile ilgili tüm kodları yeni bir dosyaya koyun – custom-wp-cli-commands.php . Bu dosyayı yalnızca gerektiğinde ve CLI ile ilgili tüm kodlar kullanılabilir olduğunda ekleyeceğiz. Bunun için az önce oluşturduğumuz işlevi kullanacağız. Test etmek ve öğrenmek için dosyayı aktif temanızın klasörüne koyun ve ardından bunu theme'in functions.php dosyasına ekleyin.

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

Ardından bunu custom-wp-cli-commands.php içine koyun;

/**
 * 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' );

Siteyi, ana sayfayı veya yöneticiyi bir tarayıcıda açarsanız hiçbir şey olmaz. Bu iyi. Yeni CLI komutunu test etmek için komut satırı pencerenize dönün, wp site-info version çalıştırın ve eklenti ve site versiyonunu elde edeceksiniz. Veya wp site-info plugins çalıştırın ve sitedeki toplam eklenti sayısını elde edin. Kolay değil mi? Kodun üzerinden geçelim.

Bir PHP sınıfını genişletmek kadar kolay

WP_CLI_Command cli_site_info genişletir; orada süslü bir şey yok. Sınıfı istediğiniz gibi arayabilirsiniz. Önemli olan dosyanın son satırındaki koddur – WP_CLI::add_command( 'site-info', 'cli_site_info' ) . Üst düzey komutumuzu kaydeder ve sınıfımızı ona bağlar. site-info komutunu başka bir şeyle değiştirmek istiyorsanız, bunu yapacağınız yer burasıdır.

Sınıftaki her genel yöntem (işlev), WP-CLI'de bir alt komuttur. Doğru WP-CLI dilini öğrenmek için bir komutun anatomisini kontrol ettiğinizden emin olun. Yöntemi herhangi bir yerde "kaydetmeye" veya ekstra bir şey yapmaya gerek yoktur. plugins() ve version() için yaptığımız gibi – standart bir fonksiyon oluşturun, o kadar. WP-CLI bununla ne yapacağını bilecektir.

Yönteme girdikten sonra, ihtiyacınız olan herhangi bir kodu çalıştırabilirsiniz. Bununla birlikte, CLI ile etkileşim, echo gibi şeyler beklendiği gibi çalışmadığından bazı özel işlevler gerektirecektir. echo yerine WP_CLI::line() var. Dahili WP-CLI API, ihtiyacınız olan her şeyi kapsar ve tüm işlevler iyi bir şekilde belgelenmiştir ve ayrıca giriş, çıkış, çeşitli, sistem ve onları bulmayı çok kolaylaştıran diğer kategorilere ayrılmıştır.

Metni yazdırmanın yanı sıra, muhtemelen (ilişkisel) komut bağımsız değişkenlerini kullanmak isteyeceksiniz, böylece yalnızca WP sürüm bilgisi veren wp site-info version --wponly (deneyin) gibi şeyleri çağırabilirsiniz. İlişkili bağımsız değişkenler, yöntemin ikinci işlev bağımsız değişkeninde saklanır. Bizim durumumuzda buna $assoc_args denir. Geriye kalan tek şey, dizi anahtarını belirli bir değer için test etmek ve function version( $args, $assoc_args ) yaptığımız gibi kodu buna göre ayarlamaktır.

Belgeler ve CLI içi yardım

WP-CLI, yerleşik bir yardım sistemine sahiptir. Oldukça kullanışlı. Geliştirici, komutu kodunda açıklamak için biraz zaman harcarsa, bir komut için hiçbir zaman harici belgelere ihtiyaç yoktur. Belgeler (ne yazık ki) kendi kendine yazmayacak, ancak komutlarınızı oluştururken minimum düzeyde yatırım yaparsanız, tüm belgeleri tek bir çatı altına koyacağınız için kullanıcılar sonsuza dek minnettar kalacaklardır.

PHPDoc formatını kullanarak, sınıfınızdaki dokümanları yorum olarak yazarsınız. Daha derine inmek için CLI El Kitabına bakın. wp help site-info çalıştırarak, alt komutlarımızın bir listesini ve açıklamasını alacaksınız ve koda bakarsanız, nereden geldiğini göreceksiniz. Çok açıklayıcı. Sürüm alt komutuyla ilgili daha fazla ayrıntı için wp help site-info version komutunu çalıştırın ve seçeneklerle ilgili ayrıntıları da alacaksınız.

Çok sayıda kişi tarafından kullanılmasa da @wpcli, #WordPress'in geleceğini şekillendirenler ve birçok kullanıcının görüşleri tarafından sıklıkla kullanılmaktadır. Eklentinize CLI eklemek akıllıca bir hareket olabilir

TWEET İÇİN TIKLAYIN

Kullanıcılarınızı mutlu edin

Elbette, bir hava durumu widget'ı geliştiriyorsanız, WP-CLI desteği eklemek doğru bir hareket gibi görünmüyor. Ancak, WP Reset gibi zorlu geliştiriciler ve yöneticiler tarafından kullanılan herhangi bir araç, WP-CLI'den büyük ölçüde faydalanacaktır. Kullanıcılar komutları zincirleyebilecek, bash betikleri yazabilecek ve genellikle daha fazla işi daha hızlı ve daha kolay halledebilecek. Bu, sahip olduğunuz para kazanma modelinden bağımsız olarak daha iyi incelemelere, daha mutlu kullanıcılara, daha fazla kullanıcıya ve nihayetinde sizin için daha fazla paraya yol açar.