WooCommerce: Kendi Kendine Barındırılan Eklentiyi Güncelleyin @ WP Dashboard

Yayınlanan: 2023-06-07

Bu milyon dolarlık eğitimde , bir yerde barındırdığınız özel bir (WooCommerce) eklentiyi doğrudan WordPress kontrol panelinden nasıl güncelleyeceğinizi öğreneceksiniz.

WordPress panosunun sizi yalnızca eklenti güncellemelerinden haberdar edebileceğini ve yalnızca WordPress deposundaki eklentileri güncellemenize izin verebileceğini düşündüm, ama yanılmışım!

Burada, Business Bloomer'da WooCommerce eklentileri satmaya başladığımdan beri, müşterilerin bunları doğrudan WP yöneticilerinden otomatik olarak güncellemelerine izin vermenin bir yolunu bulmalıydım.

Neyse ki kurtarmaya gelen 2 kanca var: pre_set_site_transient_update_plugins update_plugins_{$hostname} ve plugins_api . Bu iki filtreyle, WordPress'e özel eklenti ZIP dosyanızın belirli bir genel URL'den indirilebilir olduğunu söyleyebilir, müşteriye bir eklenti güncellemesinin mevcut olduğuna dair bir bildirim gösterebilir, 1 tıklama ile güncelleme yapmalarına izin verebilir ve isteğe bağlı olarak otomatik olarak etkinleştirmelerine izin verebilirsiniz. güncellemeler.

Eklenti işimi nasıl yürüttüğümü görelim. Eğlence!

Bu WordPress kontrol paneli ekran görüntüsünde, "Business Bloomer WooCommerce Oturum Kaydı Kısa Kodu" eklentisi için bir güncellemenin mevcut olduğunu ve "Sürüm ayrıntılarını görüntüle" veya "Şimdi güncelle" yapabileceğinizi açıkça görebilirsiniz. Sihirli olan şey - bu, WordPress deposunda değil, benim tarafımdan barındırılan bir eklentidir!
İçindekiler
  1. 1. Adım: Özel Eklentiyi Oluşturun ve Barındırın
  2. 2. Adım: Bir JSON Değişiklik Günlüğü Dosyası Oluşturun
  3. 3. Adım: Özel Eklentiyi herhangi bir WordPress Sitesine kurun
  4. Adım 4: PHP Snippet – Özel Eklentiyi WordPress Kontrol Panelinden Güncelleyin
  5. özet

1. Adım: Özel Eklentiyi Oluşturun ve Barındırın

Bu gönderi eklenti geliştirmekle ilgili değil. Şimdi başlıyorsanız, WordPress Eklenti El Kitabı'nı incelemekten çekinmeyin.

Geliştirmeyi tamamladıktan sonra, eklenti ZIP dosyasını genel bir URL'ye kaydedin, örneğin: www.businessbloomer.com/blabla/whatever-plugin.zip

2. Adım: Bir JSON Değişiklik Günlüğü Dosyası Oluşturun

Eklentiyi kendiniz barındırdığınızda, WordPress'e (ve eklentinin kurulu olduğu tüm WordPress web sitelerine) yeni bir sürüm olduğunu bildirmemiz gerekir, aksi takdirde 4. Adımda bulduğunuz kod tetiklenmez.

Değişiklik günlüğü verilerini depolamanın birkaç yolunu kullanabilirsiniz ve bir JSON dosyası oluşturmak en kolay olanıdır. WordPress'in ihtiyacı olan tek şey, dinamik olarak alabilmesi ve güncelleme bildirimini tetikleyebilmesi için ZIP dosya adını ve eklenti sürümünü almaktır.

Bir metin düzenleyici açın ve aşağıdaki bilgileri girin:

 {
	"plugin_name": "WooCommerce İçin Her Eklenti",
	"en son_versiyon": "1.0.9",
	"download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip",
}

Ardından, dosyayı .JSON uzantılı olarak kaydedin ve bunu kendi web sitenizin belirli bir URL'sine yerleştirin, örneğin www.businessbloomer.com/blabla/plugin-updates.json

Yeni bir eklenti sürümü yayınladığınızda bu dosyayı güncel tutun , örneğin eklentinin 2.0.0 sürümünü yükler yüklemez, JSON dosyasını şu şekilde değiştirin :

 {
	"plugin_name": "WooCommerce İçin Her Eklenti",
	"en son_versiyon": "2.0.0",
	"download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip",
}

3. Adım: Özel Eklentiyi herhangi bir WordPress Sitesine kurun

WordPress > Eklentiler > Yeni Ekle > Yükle'ye gidin ve özel eklentiyi yükleyin ve etkinleştirin. Bu eklenti bir sürüm numarasıyla gelecek, örneğin 1.0.9 - şimdi yöneticilerin daha yeni bir sürümün mevcut olması durumunda eklentiyi güncellemesi için bir yol bulmamız gerekiyor.

Adım 4: PHP Snippet – Özel Eklentiyi WordPress Kontrol Panelinden Güncelleyin

Bu harika kısım.

Bunu eklenti koduna ekleyebilirsiniz.

İki filtre kullanacağız: update_plugins_{$hostname} ve plugins_api . İlki, gerçek güncellemeden sorumludur; ikincisi, " Sürüm ayrıntılarını görüntüle " tıklandığında eklenti bilgilerini gösterir (yukarıdaki ekran görüntüsüne bakın).

Not 1: {$hostname} bölümü, eklentiyi nerede barındırdığınıza bağlıdır. Diyelim ki eklenti URL'si www.businessbloomer.com/blabla/whatever-plugin-1.0.9.zip , ardından {$hostname} www.businessbloomer.com

Not 2: Ayrıca, genellikle aynı olan eklenti klasörünün adını ve eklenti dosyasının adını da bilmeniz gerekir. ZIP dosyası whatever-plugin.zip ise, eklenti klasörünün /whatever-plugin olarak ve içinde bulunan eklenti dosyasının /whatever-plugin.php olarak adlandırılmasını bekliyorum.

Not 3: Eklenti dosyası “ Plugin URI ” ve “ Version ” başlık parametrelerini kullanmalıdır, çünkü bunları kod yoluyla alacağız.

/**
 * @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;		
    }
}

özet

Bir WordPress kullanıcısının başka bir yerde barındırdığınız bir eklentiyi güncellemesine izin vermek için şunlara ihtiyacınız vardır:

  1. eklentiyi Adım 1 (adlandırma) ve Adım 4'e (eklenti güncelleme gereksinimleri) göre geliştirmek
  2. ZIP dosyasını genel bir URL'ye kaydetmek için, böylece WordPress onu indirebilir
  3. bir JSON değişiklik günlüğü dosyasını genel bir URL'de tutmak, böylece WordPress'in bir güncelleme olup olmadığını bilmesi

Sorular? şüpheler? Geri bildirim? Aşağıda bir yorum bırakın!