久久精品国产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;">

      精品福利在线导航| 久久久久久久网| 26uuu色噜噜精品一区| 欧美日韩在线观看一区二区 | 中文字幕 久热精品 视频在线| 欧美无人高清视频在线观看| 91麻豆自制传媒国产之光| 国产一区二区三区观看| 美腿丝袜亚洲综合| 国产一区二区免费视频| 日本三级亚洲精品| 欧美日韩综合在线| 国产欧美日韩视频在线观看| 久久午夜免费电影| 免费的国产精品| 国产精品99久久久久久久女警| 高清不卡在线观看| 亚洲成人免费在线| 色婷婷国产精品久久包臀| 99九九99九九九视频精品| 亚洲高清视频的网址| 久久久蜜桃精品| 欧美在线观看视频一区二区三区| 美女精品一区二区| 亚洲一卡二卡三卡四卡无卡久久| 26uuu国产日韩综合| 欧美亚洲丝袜传媒另类| 国产精品一卡二卡| 日韩不卡一区二区| 一区二区三区四区不卡在线 | 99久久综合狠狠综合久久| 日韩av中文字幕一区二区| 亚洲图片另类小说| 不卡免费追剧大全电视剧网站| 麻豆高清免费国产一区| 成人三级伦理片| 欧美日韩国产首页在线观看| 久久综合九色综合欧美98| 最新中文字幕一区二区三区| 午夜精品影院在线观看| 国产精品一区二区男女羞羞无遮挡 | 久久精品一级爱片| 一区二区久久久久久| 捆绑紧缚一区二区三区视频| 国产精品一区二区在线播放| 一本高清dvd不卡在线观看| 亚洲精品视频在线看| 国产精品69毛片高清亚洲| 久久狠狠亚洲综合| 亚洲va欧美va人人爽| 亚洲制服欧美中文字幕中文字幕| 亚洲国产视频直播| 国产精品美女一区二区| 色婷婷av一区二区三区软件| 免费在线欧美视频| 久久久91精品国产一区二区精品| 欧美日韩色综合| 国产又黄又大久久| 亚洲精品欧美激情| 蜜桃视频免费观看一区| 中文一区在线播放| 久久精品夜色噜噜亚洲aⅴ| 欧美色倩网站大全免费| 高清国产一区二区| 久久爱www久久做| 亚洲人成小说网站色在线 | 亚洲成人精品一区二区| 亚洲精品中文在线| 久久99精品一区二区三区 | 亚洲午夜在线电影| 美女爽到高潮91| 欧美日韩综合色| 国产嫩草影院久久久久| 午夜视频久久久久久| 91免费视频网址| 欧美一区二区三级| 欧美日本在线观看| 国产suv精品一区二区三区| 国产精华液一区二区三区| 99久久99久久精品国产片果冻| 久久―日本道色综合久久| 国产在线精品免费| 亚洲婷婷综合色高清在线| 美女mm1313爽爽久久久蜜臀| 免费日本视频一区| 99热国产精品| 精品福利av导航| 亚洲一区视频在线| 丝袜诱惑制服诱惑色一区在线观看| 日韩 欧美一区二区三区| 国产在线播放一区| 亚洲欧美激情插 | 国产一区二区三区四| 亚洲v中文字幕| 国产欧美精品一区二区三区四区| 国产高清不卡一区| 国产综合一区二区| 蜜桃一区二区三区在线观看| 国产精品一区二区久激情瑜伽 | 精品91自产拍在线观看一区| 国产剧情av麻豆香蕉精品| 国产精品久久久久久久岛一牛影视| 91色婷婷久久久久合中文| 天堂在线一区二区| 国产精品无人区| 欧美高清性hdvideosex| 日本视频免费一区| 国产精品福利影院| 欧美一区二区三区在线电影| 国产一区二区三区在线观看精品| 1000精品久久久久久久久| 欧美一区二区黄色| 不卡av免费在线观看| 免费三级欧美电影| 亚洲一区二区免费视频| 久久精品在线观看| 成人高清视频在线观看| 亚洲综合一区在线| 亚洲精品在线三区| 色综合色综合色综合色综合色综合| 麻豆传媒一区二区三区| 一区二区三区日韩在线观看| 中文成人综合网| 久久影院午夜片一区| 欧美日韩国产系列| 国产一区二区美女| 亚洲欧美色综合| 久久久久久久久久久电影| 欧美中文字幕一区| 色综合久久久久久久久久久| 国产精品99久久久| 韩国视频一区二区| 日本不卡123| 夜夜操天天操亚洲| 亚洲人成精品久久久久| 国产午夜精品理论片a级大结局| 日韩西西人体444www| 欧美专区日韩专区| 色综合视频一区二区三区高清| 成人动漫视频在线| 国产不卡视频在线播放| 国产成人精品网址| 欧美激情一区二区在线| 懂色av一区二区夜夜嗨| 九九在线精品视频| 亚洲午夜羞羞片| 中文字幕亚洲精品在线观看| 久久影视一区二区| 久久综合色综合88| 久久久精品中文字幕麻豆发布| 亚洲乱码中文字幕| 日韩一二三区不卡| 色偷偷久久人人79超碰人人澡 | 久久99国产精品尤物| 亚洲精品高清视频在线观看| 日韩欧美国产三级电影视频| 91污在线观看| 国产91对白在线观看九色| 日本成人在线视频网站| 色综合久久综合| 91小视频免费观看| 欧美日韩一级黄| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩成人综合| 欧美一区二视频| 久久嫩草精品久久久精品一| 中文字幕电影一区| 亚洲免费观看高清完整| 午夜视频在线观看一区二区三区| 中文字幕高清一区| 久久精品人人做人人综合| www国产成人免费观看视频 深夜成人网| 久久亚洲综合色| 国产精品女主播在线观看| 亚洲综合一区二区| 蜜桃av一区二区在线观看| 国产精品456| 日韩欧美国产一二三区| 在线观看精品一区| 欧美午夜精品一区| 欧美又粗又大又爽| 欧美色窝79yyyycom| 欧洲精品视频在线观看| 色www精品视频在线观看| 粗大黑人巨茎大战欧美成人| 国产精品一区二区久久不卡 | 久久超级碰视频| 久久精品av麻豆的观看方式| 午夜精品福利一区二区蜜股av| 亚洲线精品一区二区三区| 亚洲一区二区欧美激情| 五月婷婷久久综合| 日本欧美一区二区| 免费成人av在线| 紧缚捆绑精品一区二区| 狠狠色丁香久久婷婷综| 国产精品123| 成人国产精品免费| 欧美综合在线视频| 欧美一级一级性生活免费录像|