久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

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)詳細信息,請參見
  • 插件更新檢查器

  • 或者只是向下滾動到簡短版本的“入門”部分。
  • 最低的服務(wù)器要求。服務(wù)器組件需要PHP 5.3+和Zip擴展。客戶端庫只需要PHP 5.2 - 相同的WordPress的當(dāng)前版本。
  • 專為可擴展性而設(shè)計。要保護您的升級下載鏈接嗎?還是使用自定義記錄器或緩存?也許您的插件沒有標準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)準備好運行服務(wù)器,下一步是使您的插件查詢它的更新。我們將使用plugin-update-checker庫來實現(xiàn)。

插件更新檢查器

  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. 準備發(fā)布更新時,只需如上所述壓縮插件目錄,然后將其packages放在服務(wù)器的子目錄中即可(覆蓋以前的版本)。

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

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

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

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

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

與主題整合

  1. 下載主題更新檢查器庫。

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

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

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

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

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

插件更新檢查器

進階主題

記錄中

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

[timestamp] IP_address	action	slug	installed_version	wordpress_version	site_url	query_string

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

擴展服務(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ù)。

保護下載鏈接

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

插件更新:保護下載鏈接

分析工具

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

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

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

給TA贊賞
共{{data.count}}人
人已贊賞
??
Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
?
購物車
優(yōu)惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      日韩欧美激情一区| 国产精品三级视频| 一区二区中文字幕在线| 99久久99久久精品免费看蜜桃| 国产视频一区二区三区在线观看| 成人福利视频网站| 亚洲柠檬福利资源导航| 欧美日韩在线播| 国产精品一区二区男女羞羞无遮挡| 欧美极品xxx| 91美女精品福利| 久久91精品国产91久久小草| 国产精品家庭影院| 欧美一区二区三区电影| 色综合天天综合给合国产| 麻豆国产欧美日韩综合精品二区 | 极品美女销魂一区二区三区免费| 国产精品情趣视频| 欧美精品日韩一本| 91性感美女视频| 国产一区二区三区四| 亚洲一区在线播放| 国产女同互慰高潮91漫画| 欧美老年两性高潮| 91一区二区在线| 国产成人自拍网| 狠狠狠色丁香婷婷综合激情 | 三级在线观看一区二区| 日韩毛片一二三区| 国产午夜精品久久久久久免费视 | 国产成人三级在线观看| 喷水一区二区三区| 三级在线观看一区二区| 亚洲高清不卡在线观看| 亚洲欧美激情在线| 中文字幕一区二区三区四区| 久久精品一区八戒影视| 精品国产一区二区三区不卡| 日韩三区在线观看| 欧美一区二区私人影院日本| 欧美日韩久久不卡| 欧美日韩国产在线播放网站| 91成人在线观看喷潮| 97精品久久久午夜一区二区三区| 成人美女视频在线观看| 成人久久久精品乱码一区二区三区| 国产成人av电影在线| 国产mv日韩mv欧美| 成人性生交大片免费看视频在线| 国产一区二区美女| 高清在线成人网| 99精品视频一区| 91国偷自产一区二区三区观看| 色偷偷久久一区二区三区| 91极品美女在线| 3d动漫精品啪啪| 欧美成人性福生活免费看| 精品国免费一区二区三区| 久久青草欧美一区二区三区| 日本一区二区综合亚洲| 国产精品久久久一区麻豆最新章节| 国产精品午夜电影| 亚洲一级二级三级在线免费观看| 亚洲国产精品一区二区www在线| 日韩国产欧美三级| 国产精品乡下勾搭老头1| 成人av动漫网站| 欧美日韩免费一区二区三区| 91精品国产91久久综合桃花| 精品国产污污免费网站入口| 国产日韩欧美电影| 玉足女爽爽91| 美国毛片一区二区三区| 成人福利在线看| 5566中文字幕一区二区电影| 国产日韩精品一区二区三区 | 综合激情网...| 亚洲aaa精品| 国产成人亚洲综合a∨婷婷图片| 色欧美片视频在线观看在线视频| 91精品在线麻豆| 国产精品狼人久久影院观看方式| 亚洲高清免费在线| 国产成人av电影| 欧美精品粉嫩高潮一区二区| 国产精品水嫩水嫩| 久久国产精品72免费观看| 91啦中文在线观看| 日本一区二区三区四区| 日韩电影在线免费观看| 91蝌蚪porny| 欧美激情一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 99在线精品观看| 久久亚洲二区三区| 三级久久三级久久久| 99re亚洲国产精品| 国产视频亚洲色图| 九九在线精品视频| 日韩视频在线你懂得| 亚洲妇熟xx妇色黄| 91免费在线视频观看| 日本一区二区三区四区| 另类欧美日韩国产在线| 欧美巨大另类极品videosbest| 亚洲视频一区二区在线观看| 国产成人综合自拍| 久久免费看少妇高潮| 久久aⅴ国产欧美74aaa| 91精品欧美一区二区三区综合在| 亚洲国产日韩综合久久精品| 99riav一区二区三区| 亚洲欧洲在线观看av| 成人激情av网| 综合精品久久久| 粉嫩绯色av一区二区在线观看| 久久一区二区三区四区| 精品在线免费视频| 欧美成人bangbros| 久久99在线观看| 精品国产伦一区二区三区观看方式 | 国产一区欧美一区| 亚洲精品在线免费播放| 久久爱另类一区二区小说| 精品少妇一区二区三区免费观看 | 亚洲一区二区中文在线| 色猫猫国产区一区二在线视频| 亚洲欧洲精品一区二区精品久久久| 成人av影院在线| 亚洲欧美视频在线观看| 欧美色区777第一页| 日韩精品国产精品| 欧美精品一区二区三区在线 | 欧美日韩中文一区| 日韩 欧美一区二区三区| 日韩你懂的电影在线观看| 精品在线播放免费| 国产精品日日摸夜夜摸av| 91丝袜美女网| 午夜精品视频在线观看| 精品福利在线导航| 91在线云播放| 天使萌一区二区三区免费观看| 日韩欧美一区二区视频| 国产91精品入口| 亚洲国产日韩a在线播放性色| 在线电影院国产精品| 福利视频网站一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩在线播放三区四区| 国产一区二区福利视频| 亚洲综合图片区| 精品电影一区二区三区| 91麻豆蜜桃一区二区三区| 日本中文字幕不卡| 综合亚洲深深色噜噜狠狠网站| 正在播放一区二区| 91丨九色丨尤物| 国产精品 欧美精品| 天堂影院一区二区| 亚洲女女做受ⅹxx高潮| 精品久久一区二区| 欧美军同video69gay| 东方欧美亚洲色图在线| 麻豆精品视频在线| 亚洲成人av福利| 日韩美女久久久| 欧美激情一区二区三区全黄| 欧美电视剧免费全集观看| 欧美探花视频资源| 91在线一区二区| 成人激情校园春色| 国内精品免费**视频| 天天综合天天综合色| 亚洲男女一区二区三区| 国产精品久久久久久久久快鸭 | 狠狠色2019综合网| 日本sm残虐另类| 亚洲一区二区不卡免费| 最近日韩中文字幕| 国产精品久久看| 亚洲国产精品成人综合| 精品成人佐山爱一区二区| 日韩午夜精品视频| 制服丝袜亚洲色图| 欧美精品电影在线播放| 在线成人av影院| 欧美久久婷婷综合色| 5566中文字幕一区二区电影| 欧美色精品天天在线观看视频| 一本色道亚洲精品aⅴ| 成人白浆超碰人人人人| 从欧美一区二区三区| 成人午夜免费电影| 91原创在线视频| 91久久精品一区二区三区| 色狠狠一区二区三区香蕉| 欧美午夜精品理论片a级按摩| 欧美日韩日日摸| 日韩精品影音先锋|