So deaktivieren Sie Core- und Plugin-Updates

10

Gibt es eine Möglichkeit, Core- und Plugin-Updates zu deaktivieren? Ich ändere ein Plugin und ein bisschen WordPress Core (ich weiß, dass es eine Sünde ist, dies zu tun), kann es aber nicht ändern.

Josh Karteson
quelle

Antworten:

8

Ja, das kannst du machen ...

define( 'DISALLOW_FILE_MODS', true ); 

Fügen Sie dieses Snippet in Ihre wp-config.phpDatei ein und Sie können Core- und Plugin-Updates deaktivieren.

Abhishek Kaushik
quelle
1
Der Nachteil ist, dass dadurch auch einige andere Funktionen deaktiviert werden - der Theme- und der Plugin-Editor. Ich denke, dass es spezifischere Konstanten für das automatische Upgrade selbst gibt
Mark Kaplun
@ MarkKaplun Ich denke, es ist besser, wenn Endbenutzer nicht auf Editoren zugreifen
Josh Karteson
Um das Thema und den Plugin-Editor nicht zuzulassen, müssen wir ... define ('DISALLOW_FILE_EDIT', true) verwenden.
Abhishek Kaushik
Vielleicht können Sie nur sagen, dass Ihre Antwort zwar technisch korrekt ist, aber verbessert werden kann.
Mark Kaplun
4
Curly Quotes in wp-config.phpsind eine Quelle für endlosen Spaß. ;)
Fuxia
8

Deaktivieren Sie alle Plugin-Updates

So einfach sollte es sein:

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Plugin Updates */
remove_action( 'load-update-core.php', 'wp_update_plugins' );

Updates für Themes / Plugins verweigern (oder umleiten)

Single Core- und Theme-Updates können mit diesem Skript deaktiviert werden. Mein Mark Jaquith:

Für Plugins aus einigen Themendateien

// Plugins
add_filter( 'http_request_args', 'cws_hidden_plugin_12345', 5, 2 );
function cws_hidden_plugin_12345( $r, $url )
{
    if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
        return $r;

    $plugins = unserialize( $r['body']['plugins'] );
    unset(
        $plugins->plugins[ plugin_basename( __FILE__ ) ],
        $plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
    );
    $r['body']['plugins'] = serialize( $plugins );

    return $r;
}

Für Themen aus einer Themen - functions.phpDatei

// Themes
add_filter( 'http_request_args', 'cws_hidden_theme_12345', 5, 2 );
    function cws_hidden_theme_12345( $r, $url )
    {
    if ( 0 !== strpos( $url, 'http://api.wordpress.org/themes/update-check' ) )
        return $r;

    $themes = unserialize( $r['body']['themes'] );
    unset(
        $themes[ get_option( 'template' ) ],
        $themes[ get_option( 'stylesheet' ) ]
    );
    $r['body']['themes'] = serialize( $themes );

    return $r;
}

Deaktivieren Sie bestimmte Plugins

Aus jedem benutzerdefinierten Plugin heraus, wie in dieser Antwort hier auf dem Stapel beschrieben :

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Aksimet Updates */
add_filter( 'site_transient_update_plugins', 'wpse120589DisableAkismetUpdates' );
function filter_plugin_updates( $value )
{
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}

Kernupdates

Eigentlich sollte das so einfach sein:

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Core Updates */
add_filter( 'pre_site_transient_update_core', '__return_null' );

Für ältere Versionen hat John Billion ein vollständiges Plugin geschrieben , das auf alle abzielt .

Weitere Informationen und fein abgestimmte Steuerung für automatische Updates

Andi Nacin hat gerade einen Beitrag auf WordPress / Make veröffentlicht , der ausführlich auf dieses Thema eingeht :

Die Versionskontrolle ist ein Abschaltschalter:

Wenn WordPress ein Versionskontrollsystem erkennt, erkennt es, dass Sie wissen, was Sie tun, und vermeidet automatische Updates jeglicher Art. Es sucht nach Subversion, Git, Mercurial und Bazaar und es sucht überall.

Es funktioniert durch die Suche zwei Verzeichnisse (ABSPATH und was auch immer Sie aktualisieren, wie WP_PLUGINS_DIRoder WP_LANG_DIR) für VCS Verzeichnisse ( .svn, .git, .hg, .bz). Und es sieht auch ein Level höher aus - und schaut weiter, bis es die Wurzel des Laufwerks erreicht. Wenn Sie also eine einzelne Subversion-Prüfung bei /oder /var/www/oder /var/www/mysite.com/ausführen, wird die WordPress-Installation bei /var/www/mysite.com/public_html/wordpress/daran gehindert, Updates zu erhalten. Es ist klar, dass es auf der Website der Vorsicht irrt.

Gleiches gilt für das Deaktivieren des Datei- und Themen-Editors:

Die DISALLOW_FILE_MODSKonstante blockiert jede Art von Dateisystemänderungen, nicht nur durch Hintergrundaktualisierungen, sondern auch durch alle Benutzer. Also, weg sind die Datei-Editoren; die Fähigkeit, Kern, Themen oder Plugins zu aktualisieren; und die Möglichkeit, neue Themes oder Plugins zu installieren.

Einzelschalter wp-config.php:

define( 'AUTOMATIC_UPDATER_DISABLED', (bool) true/false );

und

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables core updates for minor releases (default):
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Weitere Details zum verlinkten Beitrag.


Hinweis: Der gesamte oben genannte Code wird während eines 5-minütigen Google-Suchlaufs gelöscht und daher nicht getestet, sondern nur visuell unterschieden / anhand des GitHub WordPress-Quellcodes und der GitHub-Suchergebnisse getestet. Sie müssen den Inhalt selbst überprüfen. Nehmen Sie diese Forschung auch für die Zukunft in Ihre Frage auf.

Kaiser
quelle
0

Einfach, ändern Sie den Kern nicht ...... Das Ändern des Kerns ist im Grunde genommen eine Gabelung von WordPress. Wenn Sie nicht Teil eines Entwicklungsteams sind, das eine Gabel für eine lange Zeit warten kann, bringen Sie Ihren Kunden in eine Sackgasse, in der dies der einzige ist Der Upgrade-Pfad besteht darin, die Site neu zu entwickeln. Er mag damit einverstanden sein, aber es ist etwas, das im Voraus vereinbart werden muss.

In jedem Fall reicht es nicht aus, das automatische Update zu deaktivieren, und Sie müssen auch alle Upgrade-Benachrichtigungen aus dem Dashboard entfernen oder besser sicherstellen, dass der Cient keinen FTP-Zugriff auf den Server hat.

Dieselbe Logik gilt für nicht triviale Plugins aus einer seriösen Quelle (z. B. Jetpack), mit der Ausnahme, dass Sie in diesem Fall die Gabel möglicherweise langfristig warten können.

Um Plugin-Updates zu deaktivieren und niemanden davon abzuhalten, es manuell zu aktualisieren, können Sie einfach den Namen des Plugins und sein Verzeichnis ändern. Natürlich sollten Sie einen Plugin-Namen und einen Verzeichnisnamen verwenden, die nicht von einem anderen Plugin verwendet werden, "${original plugin name} tailored for $client DON"T UPGRADE"beispielsweise als neuer Plugin-Name und ${original plugin name}-for-$clientals neues Verzeichnis.

Mark Kaplun
quelle
hmm, ich verstehe es nicht. Meine Antwort ist, dass Sie vermeiden sollten , das automatische Upgrade zu deaktivieren . Ich kenne keinen Code, der dafür benötigt wird :). Leute, die mit Konstanten spielen wollen, wp-config.phphaben die Informationen in einer anderen Antwort.
Mark Kaplun
Entschuldigung, Mark. Ich habe nicht viel geschlafen: P Wie auch immer, ich war nicht der Downvoter, aber ich kann dir nicht zustimmen. Ihre Antwort ist auch viel Meinung und nicht wirklich harte Fakten.
Kaiser
Das Ändern des Plugin-Namens ist eine sehr nützliche und einfache Möglichkeit, die Plugin-Aktualisierung zu deaktivieren, da eine Namensübereinstimmung erforderlich ist. Es vermittelt dem Administrator auch die Tatsache, dass das Plugin nicht mit dem gegabelten Plugin identisch ist und er daher nicht versuchen wird, es über FTP zu aktualisieren. Das mache ich in dieser Situation. Was das Kern-Upgrade betrifft, ist es eine Meinung, die hoffentlich mit den meisten WordPress-Entwicklern geteilt wird :)
Mark Kaplun
Sie sollten auch beachten, was passiert, wenn Sie den Ordner in ein Plugin umbenennen, in dem derselbe Ordner im offiziellen wp dot org repo verwendet wird.
Kaiser
1
Ich werde das hinzufügen
Mark Kaplun