Wenn ich ein Plugin (in seiner Haupt-PHP-Datei) umbenenne, erhalte ich trotzdem Benachrichtigungen über Updates?

17

Ich war kürzlich gezwungen, die Kerndateien eines Plugins zu bearbeiten. Ich habe den Titel des Plugins aktualisiert, um anzuzeigen, dass es bearbeitet wurde.

Meine Frage ist, wird das Plugin weiterhin Update-Benachrichtigungen erhalten? In diesem Fall werde ich wahrscheinlich die Updates für dieses Plugin deaktivieren, um zu verhindern, dass jemand meine Updates vergisst und sie überschreibt.

Im Idealfall würde ich gerne sehen, ob das Plugin Aktualisierungen erhält, aber nicht zulassen, dass sie nur durch Klicken auf "Aktualisieren" ausgeführt werden. (Es müsste deinstalliert und neu installiert werden, oder ähnlich).

Zach Lysobey
quelle
Zu diesem Problem habe ich kürzlich einen Fehlerbericht in WordPress Track veröffentlicht: Sicherung eines Plugin / Theme-Verzeichnisses. Ich denke, dass ein einfaches automatisches Backup vor der automatischen Aktualisierung die Dinge für alle einfacher machen würde. Ich sehe keine Gründe, warum dies nicht getan wurde, als das automatische Update zum ersten Mal veröffentlicht wurde, noch warum es in der Zwischenzeit nicht getan wurde oder warum es nicht getan werden sollte.
Ando

Antworten:

17

Wie SickHippie und AFAIK sagen, kann man nicht beides haben. Ich füge eine Antwort mit den Informationen hinzu, die ich in diesem Stapel gesammelt habe.


Deaktivieren Sie die Update-Benachrichtigung für einzelne Plugins

Bainternet in einem Kommentar:

Öffnen Sie einfach die Plugin-Datei und ändern Sie die Versionsnummer in 9.9.9

Hameedullah Khans Antwort (Entfernen des Akismet-Update-Hinweises):

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Was löst einen Plugin-Update-Alarm aus?

Ottos Antwort:

Die API verwendet einen ziemlich ausgeklügelten Mechanismus, um Plugins mit bekannten Plugins abzugleichen. Hierbei wird jedoch hauptsächlich Folgendes überprüft: Plugin-URI, Plugin-Name und Plugin-Slug (der Verzeichnisname, in dem sich das Plugin befindet).

Wenn Sie eine dieser Einstellungen ändern, verringert sich die Wahrscheinlichkeit, dass eine Übereinstimmung gefunden wird. Es kann jedoch vorkommen, dass zwei übereinstimmen.

Info in der readme.txt wird dafür nicht verwendet. Der Header der PHP-Datei des Plugins selbst wird verwendet.


Alternativer Ansatz 1


Alternativer Ansatz 2 aus den Kommentaren gezogen

  • Ändern Sie den Plugin-Namen, die Versionsnummer und den Verzeichnisnamen
  • Installieren Sie das ursprüngliche Plugin, lassen Sie es jedoch deaktiviert, um Aktualisierungsbenachrichtigungen zu erhalten
  • füge eine benutzerdefinierte Nachricht zur Beschreibung des Plugins hinzu (oder ersetze das Original)
  • Entfernen Sie die Plugin-Aktionen (Aktivieren | Bearbeiten | Löschen) und das Kontrollkästchen für Massenaktionen

Bildbeschreibung hier eingeben

add_filter( 'all_plugins', 'wpse_56968_on_list_plugins' );
add_filter( 'plugin_action_links_akismet/akismet.php', 'wpse_56968_remove_plugin_actions', 10, 4 );
add_action( 'admin_head-plugins.php', 'wpse_56968_remove_plugin_checkbox' );

function wpse_56968_on_list_plugins( $plugins )
{
    $plugins['akismet/akismet.php']['Description'] = '<strong>*** NOTICE: PLUGIN ONLY TO CHECK UPDATES IN THE ORIGINAL ONE! ***</strong> ';// . $plugins['akismet/akismet.php']['Description'];
    return $plugins;
}

function wpse_56968_remove_plugin_actions( $actions, $plugin_file, $plugin_data, $context ) 
{
    unset( $actions['activate'], $actions['edit'], $actions['delete'] );
    return $actions; 
}

function wpse_56968_remove_plugin_checkbox()
{
    ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) {
                $('tr#akismet th.check-column').html('&nbsp;')
            });     
        </script>
    <?php
}

Verwandte Kerntickets

Brasofilo
quelle
Geniale Antwort! Vielleicht ändere ich den Plugin-Namen, die Versionsnummer und den Verzeichnisnamen und installiere dann das ursprüngliche Plugin, lasse es aber deaktiviert, damit ich sehen kann, wann es aktualisiert wird.
Zach Lysobey
1
@ZachL - Genial! Das sollte gut funktionieren!
SickHippie
2
Sie können auch den ursprünglichen Plugin-Header ändern Descriptionund einen Hinweis hinzufügen, z. Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
B .
1
@ZachL - Hinzugefügt eine vollständige zweite Alternative basierend auf diesen Kommentaren :)
Brasofilo
3

Sie können Aktualisierungen nicht deaktivieren, aber keine Aktualisierungsbenachrichtigungen - sie sind miteinander verbunden.

Um Benachrichtigungen zu deaktivieren, ändern Sie den Ordnernamen, in dem sich das Plugin befindet.

Meine persönliche Methode besteht darin, dem Titel des Plugins in der Hauptdatei 3 a voranzustellen plugin.php, was ich in meiner Plugin-Liste sehe AAA/Plugin Name. Dies fügt es als Referenz oben in die Liste ein und wird in der Plugin-Liste und in der Update-Liste angezeigt. Es ist im Grunde genommen eine persönliche Flagge, so dass ich weiß, dass diese spezifischen Plugins nicht automatisch aktualisiert werden.

SickHippie
quelle
Danke für die Antwort. Wollen Sie damit klarstellen, dass das Umbenennen eines Plugins NICHT die Benachrichtigungen über Updates beendet?
Zach Lysobey
Was deinen ersten Satz betrifft ... Ich bin sicher, ich könnte einen Weg finden, um diesen Effekt zu erzielen, vielleicht mit ein paar hinterhältigen Js, um einfach den Link aus der Benachrichtigung zu entfernen.
Zach Lysobey
AFAIK: Durch das Umbenennen der Hauptdatei oder des Titels eines Plugins in dieser Hauptdatei werden Aktualisierungsbenachrichtigungen nicht beendet. Ich bin mir ziemlich sicher, dass das Plugin-Repository anhand des Ordnernamens ermittelt wird (die vom Repo heruntergeladene Zip sollte denselben Namen und dieselbe Versionsnummer haben). Für die Deaktivierung des Updates gibt es die Plugin-Liste und die Update-Liste. Stellen Sie also sicher, dass Ihr JS an beiden Stellen ausgelöst wird (teilen Sie auch mit, dass JS - nützlich sein könnte).
SickHippie