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

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

通過幾步簡單的操作,為你開發的Wordpress 主題和插件添加自動更新功能

遠古以來,只在官方WordPress.org插件目錄托管的插件都支持自動更新。現在,我已經編寫了一個PHP庫,您可以使用該庫向任何插件添加自動更新功能。公共,私人和商業插件都一樣–現在都可以享受自動更新通知和一鍵式升級的好處。

自定義更新檢查器與WordPress已內置的升級系統緊密集成,可提供無縫的用戶體驗。觀察:

私人和商業插件的自動更新
私有托管插件的升級通知。
私人和商業插件的自動更新
具有占位符數據的版本信息窗口

準備:

客戶端庫(需要WP 3.2或更高版本)

插件更新檢查器

演示用插件

external-update-example.zip

提取碼:無
解壓碼:無

實例元數據文件:

{
    "name" : "External Update Example",
    "slug" : "external-update-example",
    "homepage" : "http://example.com/",
    "download_url" : "http://w-shadow.com/files/external-update-example/external-update-example.zip",
    
    "version" : "2.0",
    "requires" : "4.0",
    "tested" : "5.2",
    "last_updated" : "2019-05-26 10:57:00",
    "upgrade_notice" : "Here's why you should upgrade...",
    
    "author" : "Janis Elsts",
    "author_homepage" : "http://w-shadow.com/",
    
    "sections" : {
        "description" : "(Required) Plugin description. Basic HTML can be used in all sections.",
        "installation" : "(Recommended) Installation instructions.",
        "changelog" : "(Recommended) Changelog. <p>This section will be opened by default when the user clicks 'View version XYZ details'.</p>",
        "custom_section" : "This is a custom section labeled 'Custom Section'." 
    },
    
    "icons" : {
		"1x" : "http://w-shadow.com/files/external-update-example/assets/icon-128x128.png",
		"2x" : "http://w-shadow.com/files/external-update-example/assets/icon-256x256.png"
    },
    
    "banners" : {
		"low" : "http://w-shadow.com/files/external-update-example/assets/banner-772x250.png",
		"high" : "http://w-shadow.com/files/external-update-example/assets/banner-1544x500.png"
    },
    
    "rating" : 90,
    "num_ratings" : 123,
    "downloaded" : 1234,
    "active_installs" : 12345
}

Github: https://github.com/YahnisElsts/plugin-update-checker

快速入門指南

本節描述了使自動更新適用于您的插件的最快方法。這是您需要做的:為插件創建一個元數據文件,將其托管在公共可訪問的位置,并告訴更新檢查器在哪里可以找到它。

讓我們從元數據開始。將下面的JSON代碼復制到新文件中,并將占位符值替換為插件的信息。

{
"name" : "My Cool Plugin",
"slug" : "my-cool-plugin",
"download_url" : "http://example.com/plugins/my-cool-plugin.zip",
"version" : "2.0",
"author" : "John Smith",
"sections" : {
"description" : "Plugin description here. Basic HTML allowed."
}
}

(這是進行自動更新所需的最少數據量。在大多數情況下,您可能需要添加幾個字段。有關完整列表,請參見元數據文檔。)

大多數字段應該是不言自明的,除了一個可能的例外-“子彈”。WordPress希望所有支持自動更新的插件都有一個唯一的文本標識符,稱為“ slug”。通常,子插件是由官方插件目錄分配的。對于在其他地方托管的私人/商業插件,您必須加以彌補。如果不確定,請使用不帶“ .php”擴展名的插件文件名(my-cool-plugin / my-cool-plugin.php成為my-cool-plugin)。

將您剛剛創建的元數據文件上傳到Web服務器。確切地將文件放在何處或如何命名都無關緊要。重要的是,無論有人在何處安裝您的插件,都可以訪問其URL。

接下來,將“ plugin-update-checker”目錄從客戶端庫存檔復制到您的插件目錄。然后啟動您喜歡的代碼編輯器,并將以下行添加到插件文件的頂部:

require 'plugin-update-checker/plugin-update-checker.php';
$MyUpdateChecker = PucFactory::buildUpdateChecker(
'http://example.com/path/to/metadata.json',
__FILE__,
'your-chosen-slug'
);

如果您按照我的建議使用插件的文件名作為子文件,則可以忽略PucFactory::buildUpdateChecker()調用的第三個參數。

提示:有時您會遇到另一個活動插件也在使用此更新檢查器的情況。結果,可能會同時加載多個不同版本的庫。上面的代碼段將始終為您提供最新的可用版本。如果您的插件需要較舊的版本,并且與最新版本的API不兼容,則可能會出現問題。

要使用更新檢查器的特定版本(例如,插件隨附的版本),請PluginUpdateChecker_x_y直接實例化該類。用主要和次要版本號替換xy

//Use version 2.0 of the update checker.
require 'plugin-update-checker/plugin-update-checker.php';
$MyUpdateChecker = new PluginUpdateChecker_2_0 (
'http://example.com/path/to/metadata.json',
__FILE__,
'your-chosen-slug'
);

信不信由你。

PluginUpdateChecker類將處理其余部分。它將每12小時檢查一次元數據文件,如果發現已發布了新版本,請在未記錄的WP API中旋轉正確的位,以使其在“插件”選項卡中顯示為標準升級通知。假設您提供了有效的download_url,用戶只需單擊一下即可安裝更新。

提示:為更新創建ZIP文件時,請將所有插件文件放在目錄中。目錄名稱應與插件slug相匹配。請勿將文件放在ZIP歸檔文件的根目錄中-當有人綁定安裝更新時,它可能會引起細微的錯誤和錯誤。

本文的其余部分將專門討論更新檢查器類和元數據格式。

PluginUpdateChecker類

此類是更新檢查器的核心。這也是更新程序的唯一部分,除非您決定自己擴展該庫,否則它應該處理。

類構造器

應該通過將所有配置設置傳遞給PucFactory :: buildUpdateChecker()工廠方法或直接傳遞給PluginUpdateChecker構造函數來指定所有配置設置。兩者都采用以下參數:

  • $metadataUrl?–插件的元數據文件的完整URL。
  • $pluginFile–插件文件的路徑。在大多數情況下,您可以在此處簡單地使用__FILE__常量。
  • $slug–插件的“ slug”。如果未指定,則$ pluginFile的文件名部分(無“ .php”)將用作子文件。
  • $checkPeriod–檢查更新的頻率(以小時為單位)。默認為每12小時檢查一次。設置為零以禁用自動更新檢查。
  • $optionName–在何處存儲有關更新的簿記信息。默認為“ external_updates- $ slug”。

檢查更新()

手動觸發更新檢查。當您通過將$ checkPeriod(上方)設置為零來禁用自動檢查時,此功能特別有用。此方法不帶參數,不返回任何值。

addQueryArgFilter($ callback)

注冊用于過濾查詢參數的回調。每當更新檢查器需要檢索元數據文件時,它將首先運行每個過濾器回調,并將返回的查詢參數附加到元數據URL。這使您可以將任意數據傳遞到承載元數據的服務器。例如,商業插件可以使用它來實現某種授權方案,其中只有具有正確“密鑰”的用戶才能獲得自動更新。

回調函數將通過查詢參數的關聯數組傳遞,并應返回修改后的數組。默認情況下,更新檢查器會將以下參數添加到元數據URL:

  • installed_version?–設置為當前安裝的插件版本。
  • checking_for_updates?–如果檢查更新,則設置為1,否則不設置(即,在為“插件信息”框加載數據時)。

此方法采用一個參數–回調函數。

addHttpRequestArgFilter($ callback)

注冊一個回調,以過濾傳遞給內置幫助器函數wp_remote_get的各種選項,更新檢查器使用該函數定期下載插件元數據?;卣{函數應采用一個參數-關聯的參數數組-并返回修改后的數組。有關可用的參數及其工作方式的詳細信息,請參見wp_remote_get上的WP文檔。

此方法采用一個參數–回調函數。

addResultFilter($ callback)

注冊一個回調以過濾從元數據URL檢索到的插件信息。

回調函數應帶有兩個參數。如果成功檢索了元數據,則傳遞的第一個參數將是PluginInfo的實例(有關此類的說明,請參閱源代碼)。否則,它將為NULL。第二個參數是wp_remote_get的相應返回值(有關詳細信息,請參閱WP文檔)。回調函數應返回一個新的或修改的PluginInfo實例或NULL。

此方法采用一個參數–回調函數。

元數據格式

自動更新系統使用基于JSON的文件格式來描述插件。本質上,整個文件是一個大的JSON編碼對象(AKA哈希表或關聯數組)。每個字段(或數組鍵)代表有關插件最新版本的一條信息。這里是所有可用字段的完整說明。

為了簡單起見,常規元數據和與更新相關的信息都存儲在同一文件中。如果不希望這樣做,則可以使用腳本替換純JSON文件,該腳本檢查“ checking_for_updates”查詢參數的存在,如果將其設置為“ 1”,則僅發出與更新相關的字段。

筆記

您的插件必須處于活動狀態,更新才能正常工作。更新檢查器只是由您的插件加載并運行的另一段PHP代碼,如果插件處于非活動狀態,則不會運行更新檢查器。

可能不會立即顯而易見的結果是,在多站點安裝中,僅當插件在主站點上處于活動狀態時才會顯示更新。這是因為更新通知通常會顯示在網絡管理員中,并且在這種情況下,只會加載主站點上活動的插件。WordPress網絡的主要站點是第一個創建的站點,并且在“?站點->所有站點”列表中具有路徑“ /”?。

來源于: https://w-shadow.com/blog/2010/09/02/automatic-updates-for-any-plugin/

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

    9000px;">

      26uuu精品一区二区三区四区在线| 欧美sm极限捆绑bd| 美国十次综合导航| 亚洲一区日韩精品中文字幕| 1024成人网色www| 国产精品美女久久福利网站| 欧美激情一区二区三区四区| 国产女同性恋一区二区| 国产日产精品1区| 国产精品乱人伦中文| 国产精品午夜在线观看| 成人免费在线播放视频| 亚洲色图一区二区三区| 一级日本不卡的影视| 亚洲一区二区三区不卡国产欧美| 一区二区三区不卡视频在线观看| 亚洲一区影音先锋| 日韩和的一区二区| 免费人成精品欧美精品| 国产资源在线一区| 9久草视频在线视频精品| 一本久久a久久精品亚洲| 欧美日高清视频| 日韩精品最新网址| 国产精品视频观看| 亚洲福利电影网| 精品在线观看视频| 91丨九色丨蝌蚪丨老版| 制服丝袜av成人在线看| 国产喷白浆一区二区三区| 亚洲欧美日韩一区| 日韩激情视频在线观看| 国产一二三精品| 在线免费观看视频一区| 精品国产凹凸成av人导航| 日本一区二区不卡视频| 五月天久久比比资源色| 国产自产视频一区二区三区| 91视频一区二区三区| 91精品国模一区二区三区| 国产日本亚洲高清| 亚洲国产成人精品视频| 国产精品18久久久久| 在线日韩一区二区| 久久久99精品免费观看| 亚洲电影一区二区| 国产69精品一区二区亚洲孕妇 | 国产suv精品一区二区883| 91电影在线观看| 欧美激情在线观看视频免费| 美女一区二区三区| 欧美无砖专区一中文字| 国产精品久久久久久亚洲毛片 | 久久91精品国产91久久小草 | 欧美激情一区二区三区蜜桃视频| 亚洲成人先锋电影| 色综合一个色综合亚洲| 久久综合色婷婷| 日韩不卡手机在线v区| 色狠狠色狠狠综合| 中文字幕中文字幕一区| 国产精品自拍av| 精品欧美一区二区久久| 日日夜夜精品视频天天综合网| 99久久精品国产一区二区三区| 精品成人一区二区三区四区| 日本欧美一区二区三区| 欧美日韩一区中文字幕| 亚洲欧美日韩中文字幕一区二区三区| 国产sm精品调教视频网站| 欧美岛国在线观看| 免费久久精品视频| 欧美一区二区三区四区久久| 亚洲h精品动漫在线观看| 欧美日韩高清一区二区不卡| 一二三区精品视频| 欧美日韩视频在线观看一区二区三区| 亚洲免费视频成人| 欧洲精品一区二区| 亚洲va欧美va国产va天堂影院| 欧美日韩成人在线| 日韩国产一区二| 精品日韩成人av| 国产又黄又大久久| 精品sm捆绑视频| 国产成人综合自拍| 久久久久久久久伊人| 精品少妇一区二区三区在线视频| 国产一区二区三区黄视频 | 欧美mv和日韩mv的网站| 久久精品国产秦先生| 欧美成人精品福利| 国产麻豆成人传媒免费观看| 国产女主播在线一区二区| 成人av电影在线观看| 亚洲日本韩国一区| 欧美精品乱人伦久久久久久| 久久精品国内一区二区三区| 国产校园另类小说区| 色综合激情久久| 琪琪久久久久日韩精品| 久久久久久久久久久久久久久99| 成人高清免费在线播放| 一区二区三国产精华液| 欧美一级夜夜爽| 国产成人免费av在线| 亚洲精品欧美专区| 精品日韩欧美一区二区| 97精品国产露脸对白| 亚洲成人免费观看| 久久综合久久鬼色中文字| 99久久免费精品高清特色大片| 五月婷婷欧美视频| 日本一区二区三区四区 | 亚洲国产精品av| 欧美这里有精品| 国产毛片精品一区| 亚洲制服丝袜av| 国产三级三级三级精品8ⅰ区| jiyouzz国产精品久久| 免费观看一级特黄欧美大片| 国产精品久久久久久久第一福利| 9191国产精品| av在线一区二区三区| 免费成人性网站| 一区二区三区在线免费| 久久综合狠狠综合久久综合88| 色婷婷激情综合| 国产·精品毛片| 日本v片在线高清不卡在线观看| 国产精品乱码人人做人人爱| 欧美大片日本大片免费观看| 色欧美片视频在线观看在线视频| 久久99精品国产.久久久久| 亚洲第一成人在线| 中文字幕亚洲精品在线观看| 26uuu久久天堂性欧美| 7777精品伊人久久久大香线蕉最新版| 91麻豆自制传媒国产之光| 国产91精品露脸国语对白| 久久99精品久久久久| 日韩高清不卡在线| 午夜电影网亚洲视频| 一区二区三区免费在线观看| 亚洲欧美综合色| 中文字幕一区二区不卡| 国产欧美日韩亚州综合| 国产日韩欧美精品综合| 久久久精品国产99久久精品芒果| 日韩精品一区二区三区在线观看| 欧美精品第1页| 欧美久久高跟鞋激| 欧美日韩国产首页| 在线成人午夜影院| 欧美精品久久久久久久多人混战| 欧美主播一区二区三区美女| 欧美私人免费视频| 欧美日韩国产不卡| 欧美一区二区三区免费在线看| 欧美精品高清视频| 91精品福利在线一区二区三区| 欧美一区二区网站| 日韩欧美一区二区免费| 欧美一区二区三区日韩视频| 欧美日韩一区三区| 99视频精品在线| 91免费国产在线| 99re热这里只有精品免费视频 | 91丨九色丨黑人外教| eeuss鲁片一区二区三区| 99久久99久久综合| 欧美亚洲精品一区| 欧美日韩在线综合| 欧美不卡激情三级在线观看| 精品国产91久久久久久久妲己 | 美女视频第一区二区三区免费观看网站| 五月天激情小说综合| 日韩二区三区四区| 国产一区在线观看视频| 国产91精品露脸国语对白| 一本色道综合亚洲| 91精品国产综合久久香蕉的特点| 91精品在线免费| 久久久精品中文字幕麻豆发布| 专区另类欧美日韩| 免费人成在线不卡| 成人动漫精品一区二区| 91福利在线观看| 日韩精品一区二区三区蜜臀| 国产精品欧美久久久久一区二区| 亚洲综合精品自拍| 国产真实乱子伦精品视频| 99精品视频一区二区| 日韩视频永久免费| 中文字幕一区二区三区不卡在线 | 中文天堂在线一区| 视频一区欧美精品| av亚洲精华国产精华精| 精品国产免费一区二区三区香蕉| 国产精品高潮久久久久无|