Cara Menginstal WordPress menggunakan Komposer: Panduan Instalasi Langkah demi Langkah

Diterbitkan: 2023-02-28

Pendahuluan: Mengapa Komposer mendasarkan WordPress?

Seperti aplikasi lainnya, situs WordPress Anda paling aman ketika Anda dapat memastikan build berulang dan pembaruan yang dapat dilakukan untuk kode Anda dan dependensinya. Infrastruktur Anda berkomitmen melalui sekumpulan file konfigurasi yang menentukan versi PHP dan MariaDB mana yang ingin Anda gunakan. Ini adalah cara terbaik untuk memastikan proyek Anda tetap dapat direproduksi saat mengembangkan fitur baru.

Inti WordPress, ditambah tema dan pluginnya, idealnya bekerja dengan cara yang sama, tetapi seringkali tidak demikian. Panel administrasi WordPress menyediakan tombol satu-klik untuk memperbarui semua komponen ini ketika sudah usang atau mengharapkan akses tulis ke sistem file untuk membuat perubahan konfigurasi saat runtime. Namun, mengembangkan cara ini memiliki konsekuensi.

Pertama, Anda tidak selalu memiliki akses tulis ke sistem file saat runtime. Jadi, bergantung pada mekanisme ini untuk pembaruan dan perubahan konfigurasi benar-benar dibatasi untuk banyak solusi hosting. Di sisi lain, jika Anda memiliki akses tulis saat runtime di mana Anda hosting saat ini, memasang modul atau tema baru menghadirkan risiko keamanan yang tidak sepele (ketika sumbernya tidak diketahui).

Namun, mungkin yang paling penting, memperbarui WordPress saat waktu proses memisahkan status situs Anda dari kode di repositori Anda. Seorang kolega yang sedang mengerjakan fitur baru di tiruan lokal proyek mereka bisa jadi merupakan versi lengkap di belakang situs langsung. Sebagai hasil dari alur kerja ini, Anda dapat memperkenalkan bug dengan konsekuensi yang tidak diketahui (dan belum teruji).

Keuntungan menggunakan Composer

Mengingat fakta di atas, mengelola situs WordPress Anda dengan Komposer memiliki keuntungan yang jelas. Pertama, ini memungkinkan Anda untuk secara eksplisit mendefinisikan dependensi Anda dalam file yang dikomit (composer.lock). File kunci ini dihasilkan dari daftar batasan ketergantungan yang lebih deskriptif (composer.json) saat dependensi Anda diinstal, dan ini menjadi bagian dari histori komit proyek Anda. Sejak saat itu, setiap cabang baru akan bekerja dari kumpulan dependensi yang identik hingga ke hash komit yang tepat. Pada saat itu, tidak masalah siapa yang berkontribusi pada proyek atau bahkan di mana proyek tersebut diterapkan – ini adalah kode yang sama untuk semua orang di mana saja.

Komposer juga menghilangkan kebutuhan untuk melakukan banyak kode eksternal ke repositori Anda. Dalam kasus WordPress, tidak menggunakan Komposer biasanya mengharuskan Anda untuk mengkomit semua kode untuk sebuah tema, dan bahkan untuk inti dan plugin WordPress itu sendiri, ke proyek Anda sendiri. Selain membuat repositori terlalu besar dan lambat untuk dikloning, memperbarui salinan ini menjadi tindakan juggling yang tidak perlu dihadapi oleh siapa pun.

Dengan Komposer, Anda dapat menambahkan dan memperbarui dependensi ke proyek Anda, lalu mengunci versi persisnya sehingga setiap cabang baru mendapatkan pembaruan yang sama. Seandainya pembaruan dilakukan di situs yang diterapkan saat runtime, Anda harus ingat untuk git pull terlebih dahulu.

Menginstal inti WordPress dengan Komposer

Dengan cara yang sama, menggunakan Composer membuat Anda tidak perlu memasukkan semua WordPress ke repositori Anda karena Anda dapat menambahkannya sebagai dependensi. Ada beberapa cara untuk melakukannya (seperti Batuan Dasar), tergantung pada berapa banyak asumsi yang ingin Anda buat untuk konfigurasi dan struktur proyek Anda. Yang paling sederhana menggunakan garpu John Bloch Composer untuk menambahkan penginstal ke build Anda untuk WordPress:

 $ composer membutuhkan johnpbloch/wordpress-core-installer
$ komposer membutuhkan johnpbloch/wordpress-core

Perintah di atas akan membuat file composer.json dan menginstal inti WordPress di direktori WordPress. Composer.json akan terlihat seperti ini

 {
    "memerlukan": {
        "johnpbloch/wordpress-core-installer": "^2.0",
        "johnpbloch/wordpress-core": "^6.1"
    },
    "konfigurasi": {
        "izinkan-plugin": {
            "johnpbloch/wordpress-core-installer": benar
        }
    }
}

Kami memiliki inti WordPress di folder WordPress. Tetapi kita perlu menyalin index.php di luar direktori WordPress agar kita dapat mengarahkan server web ke direktori root.

Untuk mengelola WordPress dengan Komposer sepenuhnya , kita perlu menggunakan direktori yang berbeda untuk konten-wp, bukan yang default, WordPress/wp-konten.

Mari buat direktori baru di root proyek bernama wp-content.

Setelah menyalin index.php dari folder WordPress. Kita perlu mengubah lokasi file wp-blog-header.php tempat direktori WordPress kita berada.

Setelah diubah, index.php akan terlihat seperti ini

 <?php 
definisikan('WP_USE_THEMES', benar);
memerlukan( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );

Kita perlu membuat file .htaccess di direktori root dengan isi sebagai berikut:

 # MULAI WordPress
<JikaModule mod_rewrite.c>
Mesin Tulis Ulang Aktif
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Aturan Tulis Ulang . /index.php [L]
</JikaModul>
# AKHIR WordPress

Mari lanjutkan dan salin file contoh wp-config.php lalu tambahkan kode berikut:

 $domain = 'domainku.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
define('WP_HOME',"https://{$domain}");
$httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $domain;
define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' );
/** Jalur absolut ke direktori WordPress. */
jika ( !didefinisikan('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) .'/wordpress');
}

Kami telah menambahkan WordPress di ABSPATH karena inti WordPress ada di /WordPress
Karena file wp-config.php berisi data sensitif; kami tidak akan memasukkannya ke repositori kami dengan membuat file .gitignore:

 /wp-config.php
/wordpress/
/wp-konten/
/penjual/

Direktori WordPress, wp-content dan vendor juga perlu diabaikan sehingga kita juga akan menambahkannya ke file .gitignore.

Catatan: Anda perlu mengubah direktori konten-wp jika Anda ingin menambahkan konvensi penamaan yang berbeda untuk konten-wp Anda.

Direktori root proyek kita akan terlihat seperti ini

 .git
.gitignore
composer.lock
composer.json
penjual
wp-config.php
index.php
wordpress

Anda perlu membuat database dan mengubah detail di wp-config.php. Situs web WordPress Anda akan dipanggil di “mydomain.com” dan backend WordPress akan dapat diakses oleh mydomain.com/wordpress/wp-admin

Menambahkan Plugin dan Tema dari Repositori WordPress

Secara default, Composer hanya akan melihat repositori packagist.org. Tapi itu tidak mengandung plugin dan tema WordPress.

Untuk dapat menarik plugin dan tema WordPress, Anda perlu mengarahkan Composer ke repositori wpackagist.org. Anda melakukan ini dengan menambahkan potongan konfigurasi ini ke file composer.json Anda:

 "repositori": [
  {
    "type": "komposer",
    "url": "https://wpackagist.org",
    "hanya": [
      "wpackagist-plugin/*",
      "wpackagist-theme/*"
    ]
  }
],

Kita juga perlu memberi tahu Komposer tempat meletakkan plugin dan tema. Ini melibatkan penambahan sedikit konfigurasi ke composer.json:

 "ekstra": {
        "jalur-pemasang": {
            "wp-content/mu-plugins/{$name}/": [
                "ketik: wordpress-muplugin"
            ],
           "wp-content/plugins/{$name}/": [
                "ketik: plugin-wordpress"
            ],
           "wp-content/themes/{$name}/": [
                "ketik: tema-wordpress"
            ]
        }
    }

Dengan itu, Anda sekarang dapat menginstal plugin atau tema apa pun dari repositori resmi menggunakan perintah composer require, seperti yang kami lakukan untuk menginstal WordPress.

# Untuk menginstal plugin, gunakan format ini:

 komposer memerlukan "wpackagist-plugin/:"

# Untuk memasang tema, gunakan format ini:

 komposer memerlukan "wpackagist-theme/:"

Kendala versi rumit, tapi mungkin bentuk paling sederhana untuk diingat adalah menggunakan * wildcard. Untuk menginstal versi gratis plugin WP Migrate kami, menggunakan versi 2.x, Anda akan menjalankan:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

Jika Anda selalu ingin pembaruan memberi Anda versi terbaru, Anda dapat menggunakan * sebagai batasan versi:

composer require "wpackagist-plugin/wp-migrate-db:*"

Pertama kali Anda menjalankan perintah seperti ini, Anda mungkin ditanya apakah Anda ingin "mempercayai" komposer/pemasang "untuk mengeksekusi kode." Ini aman dilakukan, tetapi ketahuilah bahwa ini memungkinkan Komposer menjalankan kode di komputer Anda.

Jika semuanya baik-baik saja, Anda harus menginstal plugin (tetapi tidak diaktifkan). Saya juga akan merekomendasikan melakukan perubahan Anda ke Git pada saat ini.

Menambahkan Plugin dan Tema Kustom atau Pihak Ketiga

Ini semua baik-baik saja jika Anda menginginkan plugin dan tema dari repositori. Tetapi bagaimana jika Anda ingin menambahkan plugin pihak ketiga yang tidak ada di repositori wordpress.org, atau kode kustom Anda sendiri? Direktori WordPress tidak ada di Git, jadi bagaimana Anda mengontrol versi Anda sendiri?

Beberapa pembuat tema dan plugin mendukung repositori khusus untuk plugin mereka.

Dan beberapa tema dan plugin tidak diperbolehkan menggunakan repositori apa pun untuk plugin mereka, misalnya plugin berbayar.

Tetapi jika itu tidak berlaku, maka triknya di sini adalah dengan secara selektif menghapus direktori tertentu menggunakan file .gitignore dan menambahkan plugin dan tema khusus tersebut di composer.json.

Kita juga bisa meletakkan plugin tersebut di direktori lain untuk menginstalnya dari composer.json.

Karena kita mengabaikan folder plugin di .gitignore, kita perlu membuat folder lain bernama dist,

Di dist, kita dapat memiliki plugin berbayar dan kustom dan kita dapat menginstalnya dari Composer.

  • dist/
    • plugin/
    • tema/
    • mu-plugins/

Kami perlu menyalin plugin dan tema khusus kami ke folder yang sesuai.

Dan kita perlu membuat composer.json untuk setiap plugin yang ditambahkan di dist/plugins.

Saat ini, kami memiliki advanced-custom-fields-pro, yang berbayar. Kami juga ingin menambahkan plugin tersebut melalui komposer untuk penginstalan sekali klik dan mengotomatiskan penerapan.

Kita harus mengunduh plugin itu dari portal situs penulis dan mengekstrak plugin itu di folder dist/plugins/advanced-custom-fields-pro. Dan buat composer.json di folder yang sama dengan konten berikut,

 {
   "name": "custom-plugins/acf-pro",

   "description": "Bidang Kustom Lanjutan PRO",

   "versi": "5.12.2",

   "type": "plugin-wordpress",

   "memerlukan": {

       "komposer/pemasang": "^1.0",
       "johnpbloch/wordpress-core": ">=5.4"
   }


}

Kami dapat menambahkan versi dan nama dengan prefiks khusus di sini. Dan tambahkan beberapa kode di file root composer.json untuk memanggil plugin ini saat kita menginstal.

Di bagian "repositori": tambahkan kode berikut di bagian terakhir,

 "repositori": [
{
     "ketik": "jalur",

     "url": "dist/plugin/*",

     "pilihan": {

       "symlink": salah

     }

Anda juga memiliki entri lain di bagian repositori. Untuk menginstal plugin ini, kami memiliki dua cara, pertama menambahkan nama plugin dengan versi di

 "memerlukan": {
     "custom-plugins/acf-pro": ">=5.12.2"
}

Atau jalankan perintah berikut, itu akan menginstal plugin dan menambahkan entri di atas di composer.json.

 $ komposer memerlukan custom-plugins/acf-pro

Dengan cara yang sama, kita dapat menginstal tema dan plugin mu.

Untuk tema, kita perlu menambahkan lokasi folder tema,

 "repositori": [
{
     "ketik": "jalur",

     "url": "dist/tema/*",

     "pilihan": {

       "symlink": salah

     }

Anda harus menambahkan composer.json di tema khusus Anda dengan detail nama dan versi. Dengan menggunakan nama tersebut, kita dapat menginstal tema menggunakan perintah composer require.

Kesimpulannya

Menggunakan Composer adalah pendekatan paling efektif untuk memastikan WordPress Anda tetap aman, terkini, dan dapat direproduksi. Komposer memungkinkan pengembang untuk dengan mudah menambah dan memperbarui dependensi dalam proyek mereka dan mengunci versi persisnya untuk memastikan setiap cabang baru bekerja dengan kode yang sama.

Dengan keunggulan ini, Composer adalah pilihan tepat untuk mengelola proyek WordPress, memastikan build berulang dan pembaruan yang dapat dilakukan.

Kami memahami bahwa memulai dengan Composer bisa sedikit melelahkan. Jika Anda memiliki pertanyaan, jangan ragu untuk menghubungi kami. Kami di sini untuk membantu Anda mendapatkan hasil maksimal dari pengalaman WordPress Anda.

Referensi:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/