WooCommerce: WP 대시보드에서 자체 호스팅 플러그인 업데이트
게시 됨: 2023-06-07이 백만 달러짜리 튜토리얼에서는 WordPress 대시보드에서 직접 어딘가에서 호스팅하는 사용자 정의(WooCommerce) 플러그인을 업데이트하는 방법을 배웁니다.
워드프레스 대시보드는 플러그인 업데이트만 알려주고 워드프레스 리포지토리에 있는 플러그인만 독점적으로 업데이트할 수 있다고 생각했지만 틀렸습니다!
여기 Business Bloomer에서 WooCommerce 플러그인을 판매하기 시작한 이래로 고객이 WP 관리자에서 바로 자동으로 플러그인을 업데이트할 수 있는 방법을 찾아야 했습니다.
고맙게도 구출할 수 있는 2개의 후크가 있습니다: pre_set_site_transient_update_plugins update_plugins_{$hostname} 및 plugins_api . 이 두 필터를 사용하여 사용자 지정 플러그인 ZIP 파일을 지정된 공개 URL에서 다운로드할 수 있음을 WordPress에 알리고, 플러그인 업데이트를 사용할 수 있다는 알림을 고객에게 표시하고, 한 번의 클릭으로 업데이트하도록 하고, 선택적으로 자동 실행을 활성화하도록 할 수 있습니다. 업데이트.
그럼 제가 플러그인 사업을 어떻게 운영하는지 봅시다. 즐기다!
- 1단계: 커스텀 플러그인 생성 및 호스팅
- 2단계: JSON 변경 로그 파일 생성
- 3단계: WordPress 사이트에 사용자 지정 플러그인 설치
- 4단계: PHP 스니펫 – WordPress 대시보드에서 사용자 지정 플러그인 업데이트
- 요약
1단계: 커스텀 플러그인 생성 및 호스팅
이 게시물은 플러그인 개발에 관한 것이 아닙니다. 지금 시작하는 경우를 대비하여 WordPress 플러그인 핸드북을 자유롭게 공부하십시오.
개발이 완료되면 공개 URL(예: www.businessbloomer.com/blabla/whatever-plugin.zip )에 플러그인 ZIP 파일을 저장합니다.
2단계: JSON 변경 로그 파일 생성
플러그인을 자체 호스팅할 때 WordPress(및 플러그인이 설치된 모든 WordPress 웹사이트)에 사용 가능한 새 버전이 있음을 알려야 합니다. 그렇지 않으면 4단계에서 찾은 코드가 트리거되지 않습니다.
변경 로그 데이터를 저장하는 여러 가지 방법을 사용할 수 있으며 JSON 파일을 만드는 것이 가장 쉬운 방법입니다. WordPress에 필요한 모든 것은 ZIP 파일 이름과 플러그인 버전을 검색하여 동적으로 가져오고 업데이트 알림을 트리거할 수 있도록 하는 것입니다.
텍스트 편집기를 열고 다음 정보를 입력합니다.
{ "plugin_name": "우커머스용 플러그인", "latest_version": "1.0.9", "download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip", }
그런 다음 파일을 .JSON 확장자로 저장하고 자신의 웹사이트의 특정 URL(예: www.businessbloomer.com/blabla/plugin-updates.json )에 저장합니다.
새 플러그인 버전을 출시할 때마다 이 파일을 업데이트하십시오. 예 를 들어 플러그인 버전 2.0.0을 업로드하는 즉시 JSON 파일을 다음으로 변경하십시오 .
{ "plugin_name": "우커머스용 플러그인", "latest_version": "2.0.0", "download_url": "https://www.businessbloomer.com/blabla/whatever-plugin.zip", }
3단계: WordPress 사이트에 사용자 지정 플러그인 설치
WordPress > 플러그인 > 새로 추가 > 업로드로 이동하여 사용자 지정 플러그인을 설치하고 활성화합니다. 이 플러그인은 버전 번호(예: 1.0.9)와 함께 제공됩니다. 이제 관리자가 최신 버전을 사용할 수 있는 경우 플러그인을 업데이트할 수 있는 방법을 찾아야 합니다.
4단계: PHP 스니펫 – WordPress 대시보드에서 사용자 정의 플러그인 업데이트
이것은 멋진 부분입니다.
이것을 플러그인 코드에 추가할 수 있습니다.
update_plugins_{$hostname} 및 plugins_api 의 두 가지 필터를 사용합니다. 전자는 실제 업데이트를 담당합니다. 후자는 " 버전 세부 정보 보기 "를 클릭하면 플러그인 정보를 표시합니다(위 스크린샷 참조).
참고 1: {$hostname} 부분은 플러그인을 호스팅하는 위치를 기반으로 합니다. 플러그인 URL이 www.businessbloomer.com/blabla/whatever-plugin-1.0.9.zip 이고 {$hostname} 이 www.businessbloomer.com이라고 가정해 보겠습니다.
참고 2: 일반적으로 동일한 플러그인 폴더의 이름과 플러그인 파일의 이름 도 알아야 합니다. ZIP 파일이 every-plugin.zip 인 경우 플러그인 폴더는 /whatever-plugin 이고 포함된 플러그인 파일은 /whatever-plugin.php 라고 예상합니다.
참고 3: 플러그인 파일은 " Plugin URI " 및 " Version " 헤더 매개변수를 사용해야 합니다. 코드를 통해 검색하기 때문입니다.
/**
* @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;
}
}
요약
WordPress 사용자가 다른 곳에서 호스팅하는 플러그인을 업데이트하도록 하려면 다음이 필요합니다.
- 1단계(이름 지정) 및 4단계(플러그인 업데이트 요구 사항)에 따라 플러그인 개발
- 공개 URL에 ZIP 파일을 저장하여 WordPress에서 다운로드할 수 있도록 합니다.
- 공개 URL에 JSON 변경 로그 파일을 보관하여 WordPress에서 사용 가능한 업데이트가 있는지 알 수 있도록 합니다.
질문? 의심? 피드백? 아래에 의견을 남겨주세요!