WooCommerce: Perbarui Plugin Self-Hosted @ WP Dashboard

Diterbitkan: 2023-06-07

Dalam tutorial jutaan dolar ini Anda akan belajar cara memperbarui plugin khusus (WooCommerce) yang Anda hosting di suatu tempat , langsung dari dasbor WordPress.

Saya pikir dasbor WordPress hanya dapat memberi tahu Anda tentang pembaruan plugin dan membiarkan Anda secara eksklusif memperbarui plugin yang ada di repositori WordPress, tetapi saya salah!

Sejak saya mulai menjual plugin WooCommerce di sini di Business Bloomer, saya harus menemukan cara agar pelanggan memperbaruinya secara otomatis langsung dari admin WP mereka.

Untungnya, ada 2 pengait yang datang untuk menyelamatkan: pre_set_site_transient_update_plugins update_plugins_{$hostname} dan plugins_api . Dengan dua filter ini, Anda dapat memberi tahu WordPress bahwa file ZIP plugin khusus Anda dapat diunduh di URL publik tertentu, menunjukkan pemberitahuan kepada pelanggan bahwa pembaruan plugin tersedia, biarkan mereka memperbarui dengan 1 klik, dan secara opsional biarkan mereka mengaktifkan auto- update.

Jadi, mari kita lihat bagaimana saya menjalankan bisnis plugin saya. Menikmati!

Di tangkapan layar dasbor WordPress ini, Anda dapat dengan jelas melihat bahwa pembaruan tersedia untuk plugin “Business Bloomer WooCommerce Login Registration Shortcode”, dan Anda dapat “Lihat detail versi” atau “Perbarui sekarang”. Hal ajaibnya adalah – ini adalah plugin yang dihosting oleh saya dan bukan di repo WordPress!
Daftar isi
  1. Langkah 1: Buat & Host Plugin Kustom
  2. Langkah 2: Buat File JSON Changelog
  3. Langkah 3: Instal Plugin Kustom di Situs WordPress mana pun
  4. Langkah 4: Cuplikan PHP – Perbarui Plugin Kustom Dari Dasbor WordPress
  5. Rekap

Langkah 1: Buat & Host Plugin Kustom

Posting ini bukan tentang mengembangkan plugin. Jangan ragu untuk mempelajari Buku Pegangan Plugin WordPress jika Anda memulai sekarang.

Setelah Anda menyelesaikan pengembangan, simpan file ZIP plugin di URL publik misalnya: www.businessbloomer.com/blabla/whatever-plugin.zip

Langkah 2: Buat File JSON Changelog

Saat Anda menghosting plugin sendiri, kami perlu memberi tahu WordPress (dan semua situs web WordPress tempat plugin diinstal) bahwa ada versi baru yang tersedia, jika tidak, kode yang Anda temukan di Langkah 4 tidak akan terpicu.

Anda dapat menggunakan beberapa cara untuk menyimpan data changelog, dan membuat file JSON adalah yang paling mudah. Yang dibutuhkan WordPress hanyalah mengambil nama file ZIP dan versi plugin , sehingga bisa mendapatkannya secara dinamis dan memicu notifikasi pembaruan.

Buka editor teks, dan masukkan informasi berikut:

 {
	"plugin_name": "Plugin Apapun Untuk WooCommerce",
	"latest_version": "1.0.9",
	"download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip",
}

Kemudian, simpan file dengan ekstensi .JSON, dan tempatkan ini di URL khusus situs web Anda sendiri misalnya www.businessbloomer.com/blabla/plugin-updates.json

Selalu perbarui file ini setiap kali Anda merilis versi plugin baru misalnya segera setelah Anda mengunggah plugin versi 2.0.0, ubah file JSON menjadi:

 {
	"plugin_name": "Plugin Apapun Untuk WooCommerce",
	"latest_version": "2.0.0",
	"download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip",
}

Langkah 3: Instal Plugin Kustom di Situs WordPress mana pun

Buka WordPress > Plugin > Tambah Baru > Unggah dan pasang dan aktifkan plugin khusus. Plugin ini akan datang dengan nomor versi misalnya 1.0.9 – kita sekarang perlu mencari cara bagi admin untuk memperbarui plugin jika versi yang lebih baru tersedia.

Langkah 4: Cuplikan PHP – Perbarui Plugin Kustom Dari Dasbor WordPress

Ini adalah bagian yang keren.

Anda dapat menambahkan ini ke kode plugin.

Kami akan menggunakan dua filter: update_plugins_{$hostname} dan plugins_api . Yang pertama bertanggung jawab atas pembaruan aktual; yang terakhir menampilkan informasi plugin saat " Lihat detail versi " diklik (lihat tangkapan layar di atas).

Catatan 1: bagian {$hostname} didasarkan pada tempat Anda menghosting plugin. Misalkan URL plugin adalah www.businessbloomer.com/blabla/whatever-plugin-1.0.9.zip , maka {$hostname} adalah www.businessbloomer.com

Catatan 2: Perlu diketahui juga nama folder plugin, dan nama file plugin , yang biasanya sama. Jika file ZIP adalah apapun-plugin.zip Saya berharap folder plugin disebut /whatever-plugin dan file plugin yang ada di dalamnya disebut /whatever-plugin.php

Catatan 3: File plugin harus menggunakan parameter header “ Plugin URI ” dan “ Versi ”, karena kita akan mengambilnya melalui kode.

/**
 * @snippet       Update Self-Hosted Plugin @ WordPress Dashboard
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 7
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

// ----------------
// 1: Plugin Description When People Click On View Version Details
// Note: use the plugin slug, path, name 

add_filter( 'plugins_api', 'bbloomer_plugin_view_version_details', 9999, 3 );

function bbloomer_plugin_view_version_details( $res, $action, $args ) {
	if ( 'plugin_information' !== $action ) return $res;
	if ( $args->slug !== 'whatever-plugin' ) return $res;
	$res = new stdClass();
	$res->name = 'Whatever Plugin For WooCommerce';
	$res->slug = 'whatever-plugin';
	$res->path = 'whatever-plugin/whatever-plugin.php';
   $res->sections = array(
		'description' => 'The plugin description',
	);
   $changelog = bbloomer_whatever_plugin_request();
	$res->version = $changelog->latest_version;
	$res->download_link = $changelog->download_url;	
	return $res;
}

// ----------------
// 2: Plugin Update
// Note: use the plugin {$hostname}, slug & path 

add_filter( 'update_plugins_www.businessbloomer.com', function( $update, array $plugin_data, string $plugin_file, $locales ) {
	 if ( $plugin_file !== 'whatever-plugin/whatever-plugin.php' ) return $update;
    if ( ! empty( $update ) ) return $update;
    $changelog = bbloomer_whatever_plugin_request();
    if ( ! version_compare( $plugin_data['Version'], $changelog->latest_version, '<' ) ) return $update;
    return [
        'slug' => 'whatever-plugin',
        'version' => $changelog->latest_version,
        'url' => $plugin_data['PluginURI'],
        'package' => $changelog->download_url,
    ];	
}, 9999, 4 );

// ----------------
// 3: Retrieve Plugin Changelog
// Note: use the public JSON file address

function bbloomer_whatever_plugin_request() {
    $access = wp_remote_get( 'https://www.businessbloomer.com/blabla/plugin-updates.json', array( 'timeout' => 10,	'headers' => array( 'Accept' => 'application/json' )	) );
    if ( ! is_wp_error( $access ) && 200 === wp_remote_retrieve_response_code( $access ) ) {
			$result = json_decode( wp_remote_retrieve_body( $access ) );
			return $result;		
    }
}

Rekap

Untuk mengizinkan pengguna WordPress memperbarui plugin yang Anda host di tempat lain, Anda memerlukan:

  1. untuk mengembangkan plugin sesuai Langkah 1 (penamaan) dan Langkah 4 (persyaratan pembaruan plugin)
  2. untuk menyimpan file ZIP di URL publik, sehingga WordPress dapat mengunduhnya
  3. untuk menyimpan file log perubahan JSON di URL publik, sehingga WordPress mengetahui jika ada pembaruan yang tersedia

Pertanyaan? Keraguan? Masukan? Tinggalkan komentar di bawah ini!