久久精品国产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国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    久久精品人人做人人综合| 黄色精品一区| 亚洲人被黑人高潮完整版| 亚洲影音先锋| 欧美日韩一区二区在线播放| 亚洲茄子视频| 欧美精品一区二区三区视频| 亚洲精品影视| 欧美xx视频| 亚洲韩日在线| 欧美久久在线| 久久这里有精品视频| 1024欧美极品| 欧美日韩国产欧| 亚洲免费视频网站| 国产一区二区三区免费在线观看 | 欧美激情精品| 一区二区精品在线| 国产女主播一区二区| 欧美一区二区福利在线| 国产一区亚洲一区| 麻豆久久久9性大片| 亚洲精品乱码久久久久久按摩观| 欧美四级在线| 久久天堂成人| 久久久久国内| 一区二区激情| 在线视频你懂得一区| 国产欧美一区二区三区在线老狼 | 乱人伦精品视频在线观看| 欧美一区高清| 最新国产成人av网站网址麻豆| 欧美日韩国产免费| 欧美三级第一页| 午夜精品亚洲一区二区三区嫩草| 国产一区二区在线观看免费播放| 国产麻豆精品视频| 欧美日韩三级视频| 美国成人直播| 久久er精品视频| 亚洲尤物视频在线| 久久er99精品| 亚洲一区日韩在线| 亚洲三级网站| 亚洲中无吗在线| 久久久久久夜| 欧美综合77777色婷婷| aa亚洲婷婷| 亚洲欧洲日夜超级视频| 国产一区二区三区四区| 在线播放一区| 亚洲一区三区电影在线观看| 久久久国产精品一区二区中文| 午夜精品成人在线| 亚洲宅男天堂在线观看无病毒| 欧美在线观看视频一区二区三区 | 激情欧美日韩| 亚洲视频高清| 亚洲一品av免费观看| 亚洲精品精选| 欧美伊人久久| 久久五月天婷婷| 欧美午夜精品伦理| 欧美日韩在线直播| 狠狠色狠狠色综合| 极品尤物av久久免费看| 国产亚洲精品高潮| 国产欧美在线观看一区| 国产真实乱子伦精品视频| 亚洲免费高清| 亚洲视频在线观看免费| 久久一区精品| 国产偷久久久精品专区| 国产一区二区三区电影在线观看 | 欧美一区网站| 欧美日韩久久不卡| 国产精品va在线播放| 国产精品久久久久久久久久免费看 | 一区免费观看视频| 国产精品二区影院| 久久亚洲精品视频| 亚洲午夜免费福利视频| 在线播放中文字幕一区| 亚洲一区在线直播| 欧美日韩高清在线播放| 香蕉久久夜色精品国产使用方法 | 亚洲人精品午夜| 久久久国产精品亚洲一区| 国产精品久久久久9999| 欧美日韩一区二区国产| 亚洲在线成人精品| 欧美日韩亚洲一区二区| 韩国一区电影| 亚洲日本电影| 免费在线观看日韩欧美| 国产精品久久久久久亚洲调教 | 欧美在线观看一区二区三区| 国产精品婷婷午夜在线观看| 娇妻被交换粗又大又硬视频欧美| 午夜日韩在线观看| 国产精品夜夜嗨| 亚洲精品国产品国语在线app| 久久久九九九九| 在线观看福利一区| 你懂的视频一区二区| 亚洲第一精品电影| 午夜亚洲影视| 欧美日韩一区综合| 亚洲一区二区视频| 国产欧美日韩精品专区| 久久综合久久综合这里只有精品| 国产精品久久久久aaaa九色| 国产精品99久久久久久白浆小说| 久久久久一区二区| 91久久综合| 欧美性片在线观看| 久久精品夜夜夜夜久久| 国产精品av久久久久久麻豆网| 怡红院精品视频| 欧美福利专区| 亚洲电影天堂av| 性色av一区二区怡红| 韩国一区二区在线观看| 欧美欧美在线| 亚洲第一在线视频| 久久精品亚洲热| 亚洲精品中文字幕在线观看| 欧美成人午夜激情在线| 国产精品综合色区在线观看| 99精品国产福利在线观看免费 | 免费在线观看成人av| 国产日韩欧美一二三区| 男人插女人欧美| 在线成人www免费观看视频| 欧美日韩国产91| 久久久久久尹人网香蕉| 一区二区三区免费网站| 久久天天狠狠| 国产精品萝li| 午夜精品一区二区三区电影天堂| 在线观看欧美日韩| 欧美大片在线看| 亚洲九九爱视频| 国产主播一区二区| 国产精品免费一区二区三区在线观看 | 欧美一级视频一区二区| 国产精品久久久久久超碰| 一区二区三区国产精品| 在线观看一区欧美| 国产色婷婷国产综合在线理论片a| 亚洲欧美区自拍先锋| 国产日本欧美视频| 欧美美女bb生活片| 亚洲欧美日韩第一区| 国产性做久久久久久| 国产精品swag| 欧美日韩精品免费在线观看视频| 亚洲小视频在线| 激情成人av在线| 国产视频观看一区| 国产免费观看久久黄| 欧美日韩中文精品| 欧美视频免费| 久久久久久九九九九| 最新日韩av| 亚洲激情自拍| 亚洲精品一区二区三区四区高清 | 欧美屁股在线| 欧美精品一区二区三区在线播放 | 国产精品久久久久免费a∨大胸| 欧美日韩ab| 欧美午夜精品理论片a级按摩| 欧美福利电影网| 欧美精品福利视频| 久久国产精品久久精品国产| 狠狠色狠狠色综合系列| 久久久久久**毛片大全| 欧美一区二区女人| 久久综合福利| 这里只有精品电影| 亚洲一级黄色片| 久久gogo国模裸体人体| 蜜桃av一区二区三区| 欧美人妖另类| 亚洲第一视频网站| 亚洲女女女同性video| 另类成人小视频在线| 欧美日韩国产高清视频| 亚洲欧美日韩中文在线制服| 国产欧美一区二区视频| 好看不卡的中文字幕| 亚洲国产美女| 一区二区亚洲| 国产美女诱惑一区二区| 久久青草久久| 亚洲精品一区二区三区福利| 国产精品视频免费一区| 欧美精品免费在线观看| 国产精品久久久久久久浪潮网站 | 亚洲高清在线精品|