Komut Dosyalarıyla Yerel WordPress Site Kurulumunu Otomatikleştirme Bölüm 2: Bir WP-CLI Paketi Oluşturma



Bu serideki önceki makalemde, WordPress sitelerini yüklemek ve silmek gibi daha tekrarlayan görevleri otomatikleştirmek için kabuk komut dosyalarını kullanarak yerel WordPress geliştirme ortamlarıyla çalışmayı biraz daha kolaylaştırmanın bazı basit yollarını tartıştım.

Bu gönderiyi yayınladıktan kısa bir süre sonra Daniel Bachuber, komut dosyalarının bir WP-CLI komutu olarak yazılabileceğinden bahsetti ve bu, bunu yapmak için birkaç iyi neden olduğunu fark etmemi sağladı –

  • PHP'de Shell'de olduğumdan daha rahatım
  • Shell betikleri zaten çoğunlukla WP-CLI komutlarını çalıştırıyordu.
  • WP-CLI, parametre doğrulama ve dokümantasyonla ilgili birçok ayak işinin üstesinden gelebilir
  • WP-CLI komutları Paket Dizini aracılığıyla kolayca paylaşılabilir

Bu makalede, işleri biraz daha otomatikleştirmeye ve komut dosyalarını WP-CLI komutlarına dönüştürmeye bakacağız. Ayrıca işleri kolaylaştırmak ve iş akışlarımızı diğer geliştiricilerle paylaşmak için WP-CLI Paket Dizini'ni nasıl kullanabileceğimize bakacağız.

WP-CLI Komutu Oluşturma

Kendi WP-CLI komutumuzu oluşturarak başlayalım. Eski Shell komut dosyalarını kullanmak yerine WordPress sitelerini hızlı bir şekilde kurmak veya silmek için bu komutu kullanabileceğiz.

Bunu yapmak için, aşağıdaki içeriğe sahip yeni bir PHP dosyası oluşturmamız yeterli:

 <?php if ( defined( 'WP_CLI' ) && WP_CLI ) { WP_CLI::add_command( 'installer', 'WP_CLI_Installer', array( 'when' => 'before_wp_load' ); } /** * Quickly manage WordPress installations. * * Usages: * * wp installer install * wp installer uninstall * */ class WP_CLI_Installer { /** * Install WordPress Core * * ## OPTIONS * * <dest> * : The destination for the new WordPress install. * * [--base_path=<path>] * : Base path to install all sites in * * [--base_url=<url>] * : Base URL that sites will be subdirectories of * * [--multisite] * : Convert the install to a Multisite installation * * [--dbuser=<user>] * : Database username * * [--dbpass=<pass>] * : Database password * * [--dbhost=<host>] * : Database host * * [--admin_user] * : Admin username * * [--admin_password] * : Admin password * * [--admin_email] * : Admin email */ public function install( $args, $assoc_args ) { } /** * Uninstall the given WordPress install. * * ## OPTIONS * * <dest> * : The site that should be uninstalled. * * [--base_path=<path>] * : Base path that all sites are installed in */ public function uninstall( $args, $assoc_args ) { } }

Yukarıdaki kod birkaç şey yapar. İlk olarak, WP-CLI'nin mevcut olup olmadığını kontrol eder ve varsa installer CLI komutunu ekler. installer komutunun şimdilik iki alt komutu var, install ve uninstall .

Her işlevin docblock'u ikili bir amaca hizmet eder – bize yalnızca her işlevin ne yaptığını bir bakışta anlatmakla kalmaz, aynı zamanda bilgileri WP-CLI'ye sunar. Dosyayı bir eklenti olarak yükler ve bu noktada wp installer çalıştırırsanız, wp installer komutuyla ilgili kullanım bilgilerini görürsünüz:

wp yükleyici

Şimdi alt komutlara bazı işlevler eklemeye başlayalım. Öncelikle, eski install-wp.sh komut dosyasının işlevselliğini yeniden oluşturarak wp installer install alt komutunu uygulayacağız:

 public function install( $args, $assoc_args ) { $base_path = isset( $assoc_args['base_path'] ) ? $assoc_args['base_path'] : getcwd(); $site_path = $base_path . '/' . $args[0]; $dbuser = $assoc_args['dbuser']; $dbpass = $assoc_args['dbpass']; $dbhost = $assoc_args['dbhost']; // Download WordPress $download = "wp core download --path=%s"; WP_CLI::log( 'Downloading WordPress...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $download, $site_path ) ); // Create the wp-config file $config = "wp --path=%s core config --dbname=%s --dbuser=%s --dbpass=%s --dbhost=%s"; WP_CLI::log( 'Creating wp-config.php...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $config, $site_path, $args[0], $dbuser, $dbpass, $dbhost ) ); // Create the database $db_create = "wp --path=%s db create"; WP_CLI::log( 'Creating the database...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $db_create, $site_path ) ); // Install WordPress core. $admin_user = $assoc_args['admin_user']; $admin_pass = $assoc_args['admin_password']; $admin_email = $assoc_args['admin_email']; $subcommand = 'install'; $base_url = $assoc_args['base_url']; if ( isset( $assoc_args['multisite'] ) ) { $subcommand = 'multisite-install'; } $core_install = "wp --path=%s core %s --url=%s --title=%s --admin_user=%s --admin_password=%s --admin_email=%s"; WP_CLI::log( 'Installing WordPress...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $core_install, $site_path, $subcommand, $base_url . $args[0], $args[0], $admin_user, $admin_pass, $admin_email ) ); WP_CLI::success( "WordPress installed at $site_path" ); }

WP_CLI::launch() komutu burada WordPress'i indirmekten, wp-config.php dosyasını oluşturmaktan ve veritabanını oluşturmaktan/yüklemekten sorumlu olan birkaç mevcut WP-CLI komutunu başlatmak için kullanılır.

Burada WP_CLI::run_command() WP_CLI::launch() komutları yeni süreçler olarak başlatmak, komutları çalıştırmak için harici bir yol belirlememize izin veriyor. Bu durumda, bu yol, gelecekteki tüm sitelerin altına kurulacağı temel yol olacaktır. Bir popüler seçenek, üzerinde çalışacağınız tüm siteleri içerecek bir ~/Sites klasörüne sahip olmaktır.

Varsayılan olarak, temel yol, terminaldeki geçerli çalışma dizinine ayarlanacaktır, ancak bu, komuta --base_path argümanı sağlanarak kolayca geçersiz kılınabilir.

Kaldırma alt komutunu oluşturmak daha da kolaydır:

 public function uninstall( $args, $assoc_args ) { $base_path = isset( $assoc_args['base_path'] ) ? $assoc_args['base_path'] : getcwd(); $site_path = $base_path . '/' . $args[0]; // Let's make sure we really want to do this if ( ! isset( $assoc_args['yes'] ) ) { WP_CLI::confirm( 'Are you sure you want to proceed? Data WILL be lost!', $assoc_args ); } // Drop the database $db_drop = "wp --path=%s db drop --yes"; WP_CLI::log( 'Dropping database...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $db_drop, $site_path ) ); // Remove the files $remove_files = "rm -rf %s"; WP_CLI::log( 'Removing files...' ); WP_CLI::launch( \WP_CLI\Utils\esc_cmd( $remove_files, $site_path ) ); WP_CLI::success( "Uninstalled WordPress from $site_path" ); }

Kazara veri kaybını önlemek için, kullanıcıdan devam etmek istediğinden emin olmak için burada WP_CLI::confirm() işlevi kullanılır. Diğer komut dosyalarıyla entegrasyonu desteklemek için, bu onay, alt komuta bir argüman olarak --yes atlanabilir. Daha sonra wp db drop komutu ile veritabanı drop edilir ve dosyalar silinir.

WP-CLI Yapılandırma Dosyasını Kullanma

Yukarıdaki alt komutları çalıştırırken, temel yol veya veritabanı bağlantı bilgileri gibi herhangi bir argümanı geçmediğimi fark etmiş olabilirsiniz. Bu argümanları her seferinde manuel olarak komuta iletmek kesinlikle mümkün olsa da, başka bir olasılık da yaygın olarak kullanılan bilgileri WP-CLI yapılandırma dosyasında saklamaktır.

WP-CLI yapılandırma dosyası genellikle ~/.wp-cli/config.yml , ancak bu sistemden sisteme değişebilir. Emin olmak için wp cli info çalıştırabilir ve WP-CLI global config konumunu iki kez kontrol edebilirsiniz.

Bunu bulduğunuzda (veya gerekirse yeni bir dosya oluşturduğunuzda), aşağıdaki gibi her alt komuta varsayılan argümanları iletmek için dosyayı düzenleyebilirsiniz:

 # WP Installer default args installer install: base_path: '/Users/Example/Sites' base_url: http://localhost/ dbuser: root dbpass: root dbhost: 127.0.0.1 admin_user: test admin_password: test admin_email: [email protected] installer uninstall: base_path: '/Users/Example/Sites'

Artık wp installer install <site name> dosyasını çalıştırdığınızda, WP-CLI yapılandırma dosyasında depolanan varsayılan değerlerden herhangi biri otomatik olarak ilişkisel argümanlar olarak uygulanacaktır ve WordPress istenen konuma kurulmalıdır.

WP-CLI Paket Endeksi

Henüz yapmadıysanız, saniyeler içinde kurulabilen, büyüyen bir 3. taraf WP-CLI komutları koleksiyonu olan WP-CLI Paket Dizini'ne göz atmak için kesinlikle birkaç dakikanızı ayırmalısınız. Herhangi bir paket, terminalinizden wp package install çalıştırarak kurulabilir.

Neyse ki, dizine kendi komutlarımızı göndermek de aynı derecede kolay, böylece herkes wp installer komutunu bir eklenti olarak yüklemeden ve komutu aktif bir WordPress kurulumundan çalıştırmadan indirebilir ve kullanabilir.

Dizine bir paket göndermek için komutunuz için bir havuz oluşturmalı ve kodu GitHub'a göndermelisiniz. Bunu yaptıktan sonra, WP-CLI Paket Dizini GitHub deposunu çatallayabilir ve deponuzu repositories.txt dosyasına ekleyebilirsiniz. Son olarak, değişikliklerinizle birlikte ana depoya geri çekme isteği gönderin:

ön-açık

Bu birleştirildikten sonra, şimdi wp package install ve ardından kurmak için paketinizin adını çalıştırabilirsiniz. Bu durumda, wp package install matt/wp-installer çalıştırmak, wp installer komutunu yükleyecektir:

wp-paket-kurulum

Artık bir paket olarak kurulduğuna göre, bir siteyi hızlı bir şekilde döndürmek veya silmek için wp installer komutu terminaldeki herhangi bir yerden çalıştırılabilir.

Sıradaki ne

WP yükleyici komutu işlevsellik açısından hala biraz sınırlı olsa da, daha fazla WP-CLI alt komutu ekleyerek onu daha da genişletmek inanılmaz derecede kolaydır. Bir başka mantıklı adım, kodu daha geleceğe yönelik hale getirmek için işlevsel testler ve daha iyi hata işleme eklemek olacaktır ve eminim ki komutları daha fazla kullandıkça yeniden düzenleme yapacağım.

Eski kabuk komut dosyalarınızı WP-CLI komutlarına dönüştürmeye başladınız mı? Bu komutları geliştirmek için herhangi bir öneriniz var mı? Yorumlarda bana bildirin.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

Divi's Theme Builder ile Özel Global Başlık Nasıl Oluşturulur

Artık Tema Oluşturucu burada olduğuna göre, web sitenizi A'dan Z'ye kurmanıza yardımcı olacak yeni eğitimlere dalmak için sabırsızlanıyoruz. Buna Divi'nin yerleşik seçeneğini kullanarak özel başlıklar oluşturma da dahildir. Bu eğitimde Divi's Theme Builder'ı kullanarak global bir başlık oluşturmaya odaklanacağız. Bu sayfaya veya gönderiye farklı bir başlık atamadıysanız, web sitenizin her yerinde genel bir başlık görünecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir