WordPress更新服務(wù)器

    WordPress插件和主題的自定義更新API

    從用戶的角度來看,更新的工作方式與使用官方WordPress.org目錄中列出的插件和主題一樣。

    Github: https://github.com/YahnisElsts/wp-update-server

    本站下載:

    [zrz_file link="https://cdn.getimg.net/npc/2019/wordpress/plugin/wp-update-server-master.zip" name="wp-update-server-master.zip" code=""]

    特征

    • 提供插件和主題的更新。從用戶的角度來看,更新的工作方式與使用官方WordPress.org目錄中列出的插件和主題一樣。
    • 易于設(shè)置。只需將腳本目錄上載到服務(wù)器,然后在packages子目錄中放置插件或主題ZIP?。現(xiàn)在,您可以在上使用有效的更新API?http://yourserver.com/wp-update-server/?action=get_metadata&slug=your-plugin
    • 易于與現(xiàn)有插件和主題集成。它只需要大約5行代碼。有關(guān)詳細信息,請參見
    • WordPress更新服務(wù)器-Npcink
      WordPress更新服務(wù)器-Npcink

      插件更新檢查器

    • 或者只是向下滾動到簡短版本的“入門”部分。
    • 最低的服務(wù)器要求。服務(wù)器組件需要PHP 5.3+和Zip擴展。客戶端庫只需要PHP 5.2 - 相同的WordPress的當(dāng)前版本。
    • 專為可擴展性而設(shè)計。要保護您的升級下載鏈接嗎?還是使用自定義記錄器或緩存?也許您的插件沒有標(biāo)準(zhǔn)readme.txt,而是您希望從數(shù)據(jù)庫中加載changelog和其他更新meta?通過擴展Wpup_UpdateServer類來創(chuàng)建自己的定制服務(wù)器。請參閱下面的示例。

    入門

    設(shè)置服務(wù)器

    設(shè)置過程的這一部分對于插件和主題都是相同的。為了簡潔起見,我將從插件的角度對其進行描述。

    1. wp-update-server目錄上載到您的站點。您可以根據(jù)需要將其重命名為其他名稱(例如updates)。
    2. 使cachelogs子目錄可由PHP寫入。
    3. 創(chuàng)建插件目錄的Zip存檔。檔案名稱必須與目錄名稱+“ .zip”相同。
    4. 將Zip文件復(fù)制到packages子目錄。
    5. 通過/wp-update-server/?action=get_metadata&slug=plugin-directory-name在瀏覽器中訪問來驗證API是否有效。您應(yīng)該看到一個JSON文檔,其中包含有關(guān)插件的各種信息(名稱,版本,說明等)。

    提示:使用JSONView擴展名(Firefox,?Chrome)在瀏覽器中漂亮地打印JSON。

    創(chuàng)建Zip文件時,請確保插件文件位于目錄內(nèi),而不位于存檔根目錄下。例如,假設(shè)您有一個名為“我的酷插件”的插件,并且該插件位于內(nèi)部/wp-content/plugins/my-cool-plugin。ZIP文件的名稱my-cool-plugin.zip應(yīng)包含以下內(nèi)容:

    /my-cool-plugin
        /css
        /js
        /another-directory
        my-cool-plugin.php
        readme.txt
        ...
    

    如果將所有內(nèi)容放在根目錄下,則更新通知可能會很好地顯示,但是當(dāng)您嘗試安裝更新時會遇到無法解釋的問題,因為WordPress希望插件文件位于子目錄中。

    與插件集成

    現(xiàn)在您已經(jīng)準(zhǔn)備好運行服務(wù)器,下一步是使您的插件查詢它的更新。我們將使用plugin-update-checker庫來實現(xiàn)。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    插件更新檢查器

    1. 下載更新檢查器。
    2. plugin-update-checker目錄移動到插件的目錄。
    3. 將以下代碼添加到您的主插件文件中:要求 ' path / to / plugin-update-checker / plugin-update-checker.php ' ; $ MyUpdateChecker = Puc_v4_Factory :: buildUpdateChecker( ' http://example.com/wp-update-server/?action=get_metadata&slug=plugin-directory-name ',//元數(shù)據(jù)URL。__FILE__,//完整路徑主要插件文件。“插件目錄名” //插件塞通常是一樣的目錄的名稱。);
    4. 準(zhǔn)備發(fā)布更新時,只需如上所述壓縮插件目錄,然后將其packages放在服務(wù)器的子目錄中即可(覆蓋以前的版本)。

    默認情況下,磁帶庫每天檢查兩次更新。如果更新檢查器發(fā)現(xiàn)有新版本可用,它將在WordPress儀表板中顯示更新通知,并且用戶將能夠通過單擊“立即升級”鏈接進行安裝。從用戶的角度來看,它就像在WordPress.org上托管的插件一樣。

    請參閱更新檢查器文檔以獲取詳細的使用說明和更多示例。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    私人和商業(yè)插件的自動更新

    提示:readme.txt為插件創(chuàng)建文件。如果有的話,更新服務(wù)器將使用它來生成插件信息頁面,當(dāng)用戶單擊更新通知中的“查看版本xyz詳細信息”鏈接時,該頁面將顯示。自述文件必須符合WordPress.org自述文件標(biāo)準(zhǔn)

    注意:您的插件或主題必須處于活動狀態(tài)才能進行更新。這樣的結(jié)果是,在多站點安裝中,僅當(dāng)您的插件在主站點上處于活動狀態(tài)時才會顯示更新。這是因為只有在主站點上啟用的插件才會加載到網(wǎng)絡(luò)管理員中。作為參考,主站點是在“?所有站點”列表中具有路徑“ /”的站點

    與主題整合

    1. 下載主題更新檢查器庫。
    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    私人和商業(yè)插件的自動更新

    1. theme-updates目錄放在您的目錄includes或等效目錄中。
    2. 將此代碼段添加到您的functions.php
    require 'path/to/theme-updates/theme-update-checker.php';
    $MyThemeUpdateChecker = new ThemeUpdateChecker(
    	'theme-directory-name', //Theme slug. Usually the same as the name of its directory.
    	'http://example.com/wp-update-server/?action=get_metadata&slug=theme-directory-name' //Metadata URL.
    );
    1. Details URI標(biāo)頭添加到您的style.cssDetails URI: http://example.com/my-theme-changelog.html該標(biāo)題指定用戶單擊更新通知中的“查看版本xyz詳細信息”鏈接后將看到的頁面。將其設(shè)置為“版本zyz的新功能”頁面或主題主頁的URL。

    與插件更新一樣,主題更新檢查器將每12小時向服務(wù)器查詢主題詳細信息,并在WordPress儀表板中顯示更新通知(如果有可用的新版本)。

    有關(guān)更多信息,請參見主題更新檢查器文檔。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    私人和商業(yè)插件的自動更新

    更新:該插件更新檢查程序庫現(xiàn)在還支持主題更新。舊的主題更新檢查器不再有效維護。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    插件更新檢查器

    進階主題

    記錄中

    服務(wù)器將所有API請求記錄到該/logs/request.log文件。每行代表一個請求,其格式如下:

    [timestamp] IP_address	action	slug	installed_version	wordpress_version	site_url	query_string

    缺少或不適用的字段將替換為破折號“-”。記錄器從WordPress添加到通過HTTP API發(fā)送的所有請求的“ User-Agent”標(biāo)頭中提取WordPress版本和站點URL。如果您通過瀏覽器發(fā)出API請求,或者標(biāo)題被插件刪除或覆蓋(某些安全插件會這樣做),則這些字段將不存在。

    擴展服務(wù)器

    若要自定義更新服務(wù)器的工作方式,請創(chuàng)建擴展Wpup_UpdateServer的自己的服務(wù)器類,并編輯init腳本(即index.php如果您將服務(wù)器作為獨立應(yīng)用程序運行)以加載和使用新類。

    例如,讓我們做一個簡單的修改,即禁用下載并從更新API返回的插件詳細信息中刪除下載URL。這可以用作需要授權(quán)才能下載更新的自定義服務(wù)器的基礎(chǔ)。

    將新文件添加MyCustomServer.phpwp-update-server

    class MyCustomServer extends Wpup_UpdateServer {
    	protected function filterMetadata($meta, $request) {
    		$meta = parent::filterMetadata($meta, $request);
    		unset($meta['download_url']);
    		return $meta;
    	}
    	
    	protected function actionDownload(Wpup_Request $request) {
    		$this->exitWithError('Downloads are disabled.', 403);
    	}
    }

    編輯index.php以使用新類:

    require __DIR__ . '/loader.php';
    require __DIR__ . '/MyCustomServer.php';
    $server = new MyCustomServer();
    $server->handleRequest();

    從另一個腳本運行服務(wù)器

    雖然使用更新服務(wù)器的最簡單方法是將其作為獨立的應(yīng)用程序運行,但這并不是唯一的方法。如果需要,還可以將其作為第三方庫加載并創(chuàng)建自己的服務(wù)器實例。這樣,您就可以在將查詢參數(shù)傳遞到服務(wù)器之前對其進行過濾和修改,通過WordPress插件運行它,使用自己的服務(wù)器類,等等。

    要從您自己的應(yīng)用程序運行服務(wù)器,您需要做三件事:

    1. 包括/wp-update-server/loader.php
    2. 創(chuàng)建的實例Wpup_UpdateServer或擴展它的類。
    3. 調(diào)用handleRequest($queryParams)方法。

    這是一個基本示例插件,可從WordPress內(nèi)部運行更新服務(wù)器:

    <?php
    /*
    Plugin Name: Plugin Update Server
    Description: An example plugin that runs the update API.
    Version: 1.0
    Author: Yahnis Elsts
    Author URI: http://w-shadow.com/
    */
    
    require_once __DIR__ . '/path/to/wp-update-server/loader.php';
    
    class ExamplePlugin {
    	protected $updateServer;
    
    	public function __construct() {
    		$this->updateServer = new MyCustomServer(home_url('/'));
    		
    		//The "action" and "slug" query parameters are often used by the WordPress core
    		//or other plugins, so lets use different parameter names to avoid conflict.
    		add_filter('query_vars', array($this, 'addQueryVariables'));
    		add_action('template_redirect', array($this, 'handleUpdateApiRequest'));
    	}
    	
    	public function addQueryVariables($queryVariables) {
    		$queryVariables = array_merge($queryVariables, array(
    			'update_action',
    			'update_slug',
    		));
    		return $queryVariables;
    	}
    	
    	public function handleUpdateApiRequest() {
    		if ( get_query_var('update_action') ) {
    			$this->updateServer->handleRequest(array_merge($_GET, array(
    				'action' => get_query_var('update_action'),
    				'slug'   => get_query_var('update_slug'),
    			)));
    		}
    	}
    }
    
    class MyCustomServer extends Wpup_UpdateServer {
        protected function generateDownloadUrl(Wpup_Package $package) {
            $query = array(
                'update_action' => 'download',
                'update_slug' => $package->slug,
            );
            return self::addQueryArg($query, $this->serverUrl);
        }
    }
    
    $examplePlugin = new ExamplePlugin();

    注意:如果您打算在實踐中使用上述類似內(nèi)容,則可能需要重寫Wpup_UpdateServer::generateDownloadUrl()以自定義URL或更改查詢參數(shù)。

    保護下載鏈接

    請參閱此博客文章,以獲取高層次的概述和一些簡短的示例。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    插件更新:保護下載鏈接

    分析工具

    您可以使用wp-update-server-stats工具來解析服務(wù)器日志并顯示統(tǒng)計信息,例如活動安裝的數(shù)量,活動版本等。

    WordPress更新服務(wù)器-Npcink
    WordPress更新服務(wù)器-Npcink

    從wp-update-server日志收集統(tǒng)計信息

    來源于: https://github.com/YahnisElsts/wp-update-server

    主題文件結(jié)構(gòu)及執(zhí)行(速看) - WordPress 開發(fā)

    2018-12-25 8:41:00

    全屏背景時間展示網(wǎng)頁 - html單頁

    2019-6-30 9:11:40

    ??
    Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    0 條回復(fù) A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優(yōu)惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲男人的天堂一区二区| 国产精品一区二区三区高清在线| 国产伦精品一区二区三区无广告 | 亚洲一区二区三区影院| 精品久久一区二区三区| 色偷偷一区二区无码视频| 国产一区二区免费在线| 精品女同一区二区三区免费站| 国产一区二区视频免费| 精品国产福利一区二区| 久久er99热精品一区二区| 国产一区二区三区久久| 狠狠色婷婷久久一区二区| 国产一区在线视频| 精品免费久久久久国产一区| 一区二区国产精品| 中文字幕日韩一区二区不卡| 亚洲午夜精品一区二区| 性无码免费一区二区三区在线 | 国产伦精品一区二区三区免.费| 精品国产a∨无码一区二区三区| 无码aⅴ精品一区二区三区浪潮 | 精品国产AV一区二区三区| 精品一区二区三区免费毛片爱| 日韩av无码一区二区三区| 无码成人一区二区| 色狠狠AV一区二区三区| 日韩中文字幕精品免费一区| 亚洲高清日韩精品第一区| 波多野结衣一区二区| 亲子乱av一区区三区40岁| 日本一区二区三区精品视频| 国产凸凹视频一区二区| 国产精品男男视频一区二区三区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲一区视频在线播放| 国精产品一区二区三区糖心 | 久久久av波多野一区二区| 波多野结衣一区视频在线| 国产精品综合AV一区二区国产馆| 黑巨人与欧美精品一区|