問題描述
有沒有辦法停用特定外掛的更新通知?
作為外掛開發人員,我的個人網站上安裝了一些外掛,使用 svn trunk 版本進行測試,但從外掛網站可以看到相同的外掛。在這些情況下,WP 認為最新版本是最新發布的版本,並不斷嘗試警告我有更新可用。
我仍然希望看到有關其他外掛更新的通知,但是不要忽視標題中的 Updates (2)通知,這樣做是不方便的。
最佳解決方案
例如,如果您不希望 Wordpress 顯示 akismet 的更新通知,您可以這樣做:
function filter_plugin_updates( $value ) {
unset( $value->response['akismet/akismet.php'] );
return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
次佳解決方案
Hameedullah Khan 的答案將會引發一個 PHP 警告。包括這個 if 子句來檢查,以確定它是一個物件,然後取消設定該外掛的響應。
‘ 警告:嘗試修改 non-object 的屬性’
嘗試這樣做以避免警告 (外掛檔案本身的程式碼):
// remove update notice for forked plugins
function remove_update_notifications($value) {
if ( isset( $value ) && is_object( $value ) ) {
unset( $value->response[ plugin_basename(__FILE__) ] );
}
return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );
我喜歡將其放在實際的外掛中。由於我只是在一個外掛上停用更新,因為我已經修改或分配了程式碼,並且不希望在更新時丟失編輯內容,所以我已經編輯了外掛,因此不用介意編輯它。它使我的功能檔案有點清潔。但是如果您希望可以將其放在函式檔案中,並且該方法的好處是您可以透過為該外掛新增另一個未設定的行 (透過 functions.php 編寫程式碼),可以從更新中刪除多個外掛:
// remove update notice for forked plugins
function remove_update_notifications( $value ) {
if ( isset( $value ) && is_object( $value ) ) {
unset( $value->response[ 'hello.php' ] );
unset( $value->response[ 'akismet/akismet.php' ] );
}
return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。