Jeśli zmienię nazwę wtyczki (w jej głównym pliku php), czy nadal otrzymuję powiadomienia o aktualizacji?

17

Ostatnio zostałem zmuszony do edycji podstawowych plików wtyczki. Zaktualizowałem tytuł wspomnianej wtyczki, aby wskazać, że została edytowana.

Moje pytanie brzmi: czy wtyczka nadal będzie otrzymywać powiadomienia o aktualizacji? Jeśli tak, prawdopodobnie wyłączę aktualizacje tej wtyczki, aby ktoś nie zapomniał o moich aktualizacjach i nadpisywaniu.

Idealnie chciałbym sprawdzić, czy wtyczka pobiera aktualizacje, ale nie zezwalaj na to, klikając tylko aktualizację. (musiałby zostać odinstalowany i ponownie zainstalowany lub podobny).

Zach Lysobey
źródło
O tym problemie niedawno opublikowałem raport o błędach na WordPress Track: Kopia zapasowa katalogu wtyczki / motywu. Myślę, że prosta automatyczna kopia zapasowa w środku, ale przed funkcją automatycznej aktualizacji znacznie ułatwi wszystkim. Nie widzę żadnych powodów, dla których nie zostało to zrobione, gdy automatyczna aktualizacja została wydana po raz pierwszy, ani dlaczego nie zostało zrobione w międzyczasie, ani dlaczego nie powinno się tego robić.
Ando

Odpowiedzi:

17

Jak mówi SickHippie i AFAIK, nie możesz mieć obu. Dodaję odpowiedź z informacjami zebranymi w tym stosie.


Wyłącz powiadomienia o aktualizacji dla poszczególnych wtyczek

Bainternet w komentarzu:

Po prostu otwórz plik wtyczki i zmień numer wersji na coś takiego jak 9.9.9

Odpowiedź Hameedullaha Khana (usunięcie powiadomienia o aktualizacji Akismet):

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

Co wyzwala alert aktualizacji wtyczki

Odpowiedź Otto:

Interfejs API używa dość skomplikowanego mechanizmu, aby dopasować wtyczki do wtyczek, o których wie, ale są to główne rzeczy sprawdzane pod kątem: URI wtyczki, Nazwa wtyczki i Slug wtyczki (nazwa katalogu, w którym znajduje się wtyczka)

Zmień dowolną z nich, a zmniejszysz szanse na znalezienie dopasowania, ale nadal może ją uzyskać, jeśli na przykład dwie pasują do siebie.

Informacje w pliku readme.txt nie są do tego wykorzystywane. Używany jest nagłówek samego pliku PHP wtyczki.


Alternatywne podejście 1


Alternatywne podejście 2 wyciągnięte z komentarzy

  • zmień nazwę wtyczki, numer wersji i nazwę katalogu
  • zainstaluj oryginalną wtyczkę, ale wyłącz ją, aby otrzymywać powiadomienia o aktualizacjach
  • dodaj niestandardową wiadomość do opisu wtyczki (lub zamień oryginał)
  • usuń działania wtyczki (Aktywuj | Edytuj | Usuń) i pole wyboru Akcje zbiorcze

wprowadź opis zdjęcia tutaj

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
}

Powiązane bilety podstawowe

brasofilo
źródło
Świetna odpowiedź! Być może zmienię nazwę wtyczki, numer wersji i nazwę katalogu, a następnie zainstaluję oryginalną wtyczkę, ale pozostawię ją dezaktywowaną, aby zobaczyć, kiedy się aktualizuje.
Zach Lysobey
1
@ZachL - genialny! To powinno działać dobrze!
SickHippie
2
Możesz także zmodyfikować oryginalny nagłówek wtyczki Descriptioni dodać uwagi, takie jak:Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
brasofilo
1
@ZachL - Dodano pełną drugą alternatywę opartą na tych komentarzach :)
brasofilo
3

Nie można wyłączyć aktualizacji, ale nie powiadomienia o aktualizacjach - są one powiązane.

Aby całkowicie wyłączyć powiadomienia, zmień nazwę folderu, w którym znajduje się wtyczka.

Moją osobistą metodą jest dodanie 3 a do tytułu wtyczki w głównym plugin.phppliku, więc na mojej liście wtyczek widzę AAA/Plugin Name. Spowoduje to umieszczenie go na górze listy w celach informacyjnych i pojawi się na liście wtyczek i na liście aktualizacji. Zasadniczo jest to flaga osobista, więc wiem, że nie mogę automatycznie aktualizować tych konkretnych wtyczek.

SickHippie
źródło
Dzięki za odpowiedzi. Tylko dla wyjaśnienia, czy mówisz, że zmiana nazwy wtyczki NIE zatrzymuje powiadomień o aktualizacji?
Zach Lysobey
Co do twojego pierwszego zdania ... Jestem pewien, że mógłbym znaleźć sposób na osiągnięcie tego efektu, być może z kilkoma podstępnymi js, aby po prostu usunąć link z powiadomienia.
Zach Lysobey
AFAIK, zmiana nazwy głównego pliku lub tytułu wtyczki w tym głównym pliku nie zatrzymuje powiadomień o aktualizacji. Jestem całkiem pewien, że Repozytorium wtyczek jest pobierane na podstawie nazwy folderu (plik zip pobrany z Repo powinien mieć tę samą nazwę plus numer wersji). Do wyłączania aktualizacji dostępna jest lista wtyczek i lista aktualizacji, więc upewnij się, że JS odpala w obu miejscach (również udostępnij JS - może być przydatne).
SickHippie