WordPress更新服務器

    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目錄中列出的插件和主題一樣。
    • 易于設置。只需將腳本目錄上載到服務器,然后在packages子目錄中放置插件或主題ZIP?。現在,您可以在上使用有效的更新API?http://yourserver.com/wp-update-server/?action=get_metadata&slug=your-plugin。
    • 易于與現有插件和主題集成。它只需要大約5行代碼。有關詳細信息,請參見
    • WordPress更新服務器-Npcink
      WordPress更新服務器-Npcink

      插件更新檢查器

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

    入門

    設置服務器

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

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

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

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

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

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

    與插件集成

    現在您已經準備好運行服務器,下一步是使您的插件查詢它的更新。我們將使用plugin-update-checker庫來實現。

    WordPress更新服務器-Npcink
    WordPress更新服務器-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 ',//元數據URL。__FILE__,//完整路徑主要插件文件?!安寮夸浢?//插件塞通常是一樣的目錄的名稱。);
    4. 準備發布更新時,只需如上所述壓縮插件目錄,然后將其packages放在服務器的子目錄中即可(覆蓋以前的版本)。

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

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

    WordPress更新服務器-Npcink
    WordPress更新服務器-Npcink

    私人和商業插件的自動更新

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

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

    與主題整合

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

    私人和商業插件的自動更新

    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標頭添加到您的style.cssDetails URI: http://example.com/my-theme-changelog.html該標題指定用戶單擊更新通知中的“查看版本xyz詳細信息”鏈接后將看到的頁面。將其設置為“版本zyz的新功能”頁面或主題主頁的URL。

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

    有關更多信息,請參見主題更新檢查器文檔。

    WordPress更新服務器-Npcink
    WordPress更新服務器-Npcink

    私人和商業插件的自動更新

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

    WordPress更新服務器-Npcink
    WordPress更新服務器-Npcink

    插件更新檢查器

    進階主題

    記錄中

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

    [timestamp] IP_address	action	slug	installed_version	wordpress_version	site_url	query_string

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

    擴展服務器

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

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

    將新文件添加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();

    從另一個腳本運行服務器

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

    要從您自己的應用程序運行服務器,您需要做三件事:

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

    這是一個基本示例插件,可從WordPress內部運行更新服務器:

    <?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();

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

    保護下載鏈接

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

    WordPress更新服務器-Npcink
    WordPress更新服務器-Npcink

    插件更新:保護下載鏈接

    分析工具

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

    WordPress更新服務器-Npcink
    WordPress更新服務器-Npcink

    從wp-update-server日志收集統計信息

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

    Musik -響應式音樂WordPress主題

    2020-1-30 22:55:13

    投稿

    支付測試

    2020-9-13 21:31:30

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 国产产一区二区三区久久毛片国语| 亚洲一区二区三区日本久久九| 国产AV一区二区精品凹凸| 无码少妇丰满熟妇一区二区| 性色AV 一区二区三区| 亚洲色精品三区二区一区| 久久99精品波多结衣一区| 午夜视频一区二区三区| 国产精品一区二区久久精品无码| 国产乱码精品一区二区三区四川 | 精品国产天堂综合一区在线| 国产一区在线视频| 日韩免费视频一区| 中文字幕精品一区二区| 精品福利一区二区三区免费视频 | 无码毛片视频一区二区本码| 国产精久久一区二区三区| 视频在线观看一区| 国产一区二区三区播放| 国产成人AV区一区二区三 | 99精品高清视频一区二区| 福利视频一区二区牛牛 | 亚洲电影一区二区三区| 国产色情一区二区三区在线播放| 杨幂AV污网站在线一区二区| 秋霞鲁丝片一区二区三区| 国产av一区二区精品久久凹凸| 国产无吗一区二区三区在线欢| 日本免费一区二区三区最新vr| 国产肥熟女视频一区二区三区| 国产剧情一区二区| 一区三区三区不卡| 高清国产精品人妻一区二区| 中文人妻av高清一区二区| 国99精品无码一区二区三区| 久久久精品人妻一区二区三区四| 日韩精品一区二区三区中文精品| 亚洲国产AV一区二区三区四区| 国产精品一区电影| 东京热无码av一区二区| 人妻少妇久久中文字幕一区二区|