Deaktivieren Sie die Update-Benachrichtigung für einzelne Plugins

49

Gibt es eine Möglichkeit, Aktualisierungsbenachrichtigungen für bestimmte Plugins zu deaktivieren?

Als Plugin-Entwickler habe ich einige Plugins auf meiner persönlichen Site installiert, wobei ich zum Testen die svn-Trunk-Version verwendet habe, aber die gleichen Plugins sind auf der Plugin-Site verfügbar. In diesen Fällen betrachtet WP die neueste Version als die zuletzt veröffentlichte Version und warnt mich ständig, dass Updates verfügbar sind.

Ich möchte weiterhin Benachrichtigungen für Updates anderer Plugins sehen, aber es ist ärgerlich, den Updates (2)Hinweis in der Kopfzeile ständig zu ignorieren !

Caleb
quelle
Öffne einfach die Plugin-Datei und ändere die Versionsnummer auf 9.9.9
Bainternet
Sorry @Bainternet, aber das wäre zu hackisch gewesen, da es sich bei der Site um eine SVN-Prüfung handelt und das Plugin von einem svn:externalVerweis auf den Plugin-Entwicklungscode stammt. Eine lokal geänderte Datei auf einem Produktionsserver ist keine Option. Der Filter von Hameedullah funktioniert, weil er im Code-Repository für die Site gespeichert wird.
Caleb
Ja, ich habe den Teil über die Seite verpasst, die auf svn
Bainternet am
Sie können auch einfach das Disable Updates Manager- Plugin von Websiteguy auf WordPress.org verwenden.
Matthew

Antworten:

67

Wenn Sie beispielsweise nicht möchten, dass Wordpress Aktualisierungsbenachrichtigungen für akismet anzeigt, gehen Sie folgendermaßen vor:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Hameedullah Khan
quelle
1
Ich habe das am Ende von platziert ./wp-config.php, den Plugin-Dateipfad ersetzt und es hat den Job gemacht.
Caleb
6
Du kannst das in die functions.php deines Themas einfügen, wenn es nicht möglich ist, dann kannst du es in eine separate Plugin-Datei einfügen. Meiner Meinung nach ist es keine gute Idee, dies in die Datei wp-config.php zu schreiben.
Hameedullah Khan
1
Ich möchte nicht wirklich, dass meine Funktion an das Thema gebunden ist, und das Hinzufügen eines Plugins scheint genauso ein Hack zu sein wie das einfache Hacken des Plugins, das ich habe. Können Sie erklären, warum Sie der Meinung sind, dass wp-config.php kein guter Ort ist, um standortspezifische Konfigurationshacks zu erstellen?
Caleb
Sehr gute Lösung, die für mich in functions.php gut funktioniert hat. Es ist einfach, der Liste weitere Plugins hinzuzufügen, indem Sie einfach ein weiteres unset () hinzufügen ... Guter Tipp Hameedullah ..
Lars Koudal
2
Erstellen Sie für diejenigen mit den gleichen Bemerkungen wie @Caleb im Ordner wp-content einen neuen Ordner mit dem Namen: mu-pluginsund erstellen Sie ein kleines Plugin, das Sie dort ablegen. Es hinzuzufügen, wie oben von einigen erwähnt, wp-config.phpist imho absolut der falsche Ort.
Charles
31

Hameedullah Khans Antwort wird eine PHP-Warnung auslösen. Fügen Sie diese if-Klausel ein, um sicherzustellen, dass es sich um ein Objekt handelt, bevor Sie die Antwort für dieses Plugin deaktivieren.

'Warnung: Versuch, die Eigenschaft eines Nichtobjekts zu ändern'

Versuchen Sie dies, um die Warnungen zu vermeiden (Code für die Plugin-Datei selbst):

// 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' );

Ich stelle das gerne in das eigentliche Plugin. Da ich Aktualisierungen für ein Plugin nur deaktiviert habe, weil ich den Code bearbeitet oder gegabelt habe und meine Änderungen für ein Update nicht verlieren möchte, habe ich das Plugin bereits bearbeitet, und es macht mir daher nichts aus, es weiter zu bearbeiten. Es hält meine Funktionsdatei ein bisschen sauberer. Aber wenn Sie möchten, können Sie es in die Funktionsdatei einfügen. Ein Vorteil dieser Methode ist, dass Sie mehrere Plugins aus Updates entfernen können, indem Sie eine weitere nicht gesetzte Zeile für dieses Plugin wie folgt hinzufügen (Code für 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' );
Kreiswürfel
quelle
Danke dafür. Ich hatte Probleme mit der Verwendung dieses Codes direkt in Plugins. Als es sich um ein Plugin handelte, schien es in Ordnung, aber als ich es mit anderen Plugins tat (verschiedene Funktionsnamen), verlor ich Benachrichtigungen für alle Plugins und den Link "Details anzeigen" für WP-Repo-Plugins verschwunden. Das Verwenden Ihrer Checks, aber das Einfügen in die functions.php meines Themas war zuverlässiger, ohne dass die Benachrichtigungen über Updates für andere Plugins beeinträchtigt wurden. Nicht im Plugin zu sein hat den Vorteil, dass das Plugin nicht aktiv sein muss, damit es funktioniert. Wenn Sie ein Plugin mit diesem Code deaktivieren, werden Aktualisierungsbenachrichtigungen wieder angezeigt.
Philip Ingram
2

Deaktivieren Sie alle Aktualisierungsbenachrichtigungen mit Code

function remove_core_updates(){
        global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,);
    }
    add_filter('pre_site_transient_update_core','remove_core_updates');
    add_filter('pre_site_transient_update_plugins','remove_core_updates');
    add_filter('pre_site_transient_update_themes','remove_core_updates');

Der Code deaktiviert Aktualisierungsbenachrichtigungen für den WordPress-Kern, Plugins und Themes.

Super Model
quelle
"einzelne Plugins" ist der Schlüssel
Gangesh
@Gangesh, ich denke, er möchte einige bestimmte Benachrichtigungen des Plugins deaktivieren
Super Model