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


49

Czy istnieje sposób na wyłączenie powiadomień o aktualizacji dla określonych wtyczek?

Jako programista wtyczek mam kilka wtyczek zainstalowanych na mojej osobistej stronie używającej do testowania wersji pnia svn, ale te same wtyczki są dostępne na stronie wtyczek. W takich przypadkach WP uważa najnowszą wersję za najnowszą opublikowaną i nieustannie próbuje mnie ostrzec, że aktualizacje są dostępne.

Nadal chcę widzieć powiadomienia o aktualizacjach innych wtyczek, ale denerwujące jest ciągłe ignorowanie Updates (2)powiadomienia w nagłówku!


Po prostu otwórz plik wtyczki i zmień numer wersji na coś w rodzaju 9.9.9
— Bainternet

Przepraszamy @Bainternet, ale byłoby to zbyt hackerskie, ponieważ witryna jest kasą svn, a wtyczka pochodzi z svn:externalodwołania do kodu programistycznego wtyczki. Posiadanie lokalnie zmodyfikowanego pliku na serwerze produkcyjnym nie jest opcją. Filtr Hameedullaha działa, ponieważ zostaje zapisany w repozytorium kodu witryny.
— Caleb

Tak, tęskniłem za częścią o stronie działającej na svn
— Bainternet

Możesz także użyć wtyczki Disable Updates Manager firmy Websiteguy na WordPress.org.
— Matthew

Odpowiedzi:


67

Na przykład, jeśli nie chcesz, aby Wordpress wyświetlał powiadomienia o aktualizacji dla akismet, zrobisz to tak:

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

1
Umieściłem to na końcu ./wp-config.php, zastąpiłem ścieżkę pliku wtyczki i wykonało to zadanie.
— Caleb

6
Możesz to wstawić do funkcji theme.php, jeśli nie jest to możliwe, możesz umieścić osobny plik wtyczki. Moim zdaniem umieszczenie tego w wp-config.php nie jest dobrym pomysłem.
— Hameedullah Khan

1
Naprawdę nie chcę, aby moja funkcja była powiązana z motywem, a dodanie wtyczki wydaje się równie hackem, jak zwykłym włamaniem się do wtyczki, którą mam. Czy możesz wyjaśnić, dlaczego Twoim zdaniem wp-config.php nie jest dobrym miejscem na włamanie do konfiguracji specyficznej dla witryny?
— Caleb

Bardzo dobre rozwiązanie, które działało dobrze dla mnie w functions.php. Łatwo jest dodać więcej wtyczek do listy, po prostu dodając kolejny unset () ... Dobra wskazówka Hameedullah ..
— Lars Koudal

2
Dla osób z tymi samymi uwagami, co @Caleb, utwórz w folderze wp-content nowy folder o nazwie: mu-pluginsi utwórz małą wtyczkę, którą tam upuścisz. Dodanie go jak wspomniano powyżej przez niektórych w wp-config.phpjest absolutnie niewłaściwym miejscem do zrobienia.
— Charles,

31

Odpowiedź Hameedullaha Khana wyrzuci ostrzeżenie PHP. Dołącz tę klauzulę if, aby upewnić się, że jest to obiekt przed rozbrojeniem odpowiedzi dla tej wtyczki.

„Ostrzeżenie: próba modyfikacji właściwości obiektu niebędącego przedmiotem”

Spróbuj tego uniknąć ostrzeżeń (kod dla samego pliku wtyczki):

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

Lubię umieścić to w rzeczywistej wtyczce. Ponieważ zawsze wyłączałem aktualizacje wtyczki, ponieważ edytowałem lub rozwidlałem kod i nie chcę stracić swoich zmian w aktualizacji, już edytowałem wtyczkę, więc nie mam nic przeciwko edycji. To sprawia, że ​​moje funkcje są nieco czystsze. Ale jeśli chcesz, możesz umieścić go w pliku funkcji, a zaletą tej metody jest to, że możesz usunąć wiele wtyczek z aktualizacji, dodając kolejną nieuzbrojoną linię dla tej wtyczki w ten sposób (kod funkcji.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' );

Dzięki za to. Miałem problemy z używaniem tego kodu bezpośrednio we wtyczkach, wydawało mi się, że jest to w porządku, gdy była to jedna wtyczka, ale jak tylko zrobiłem to z innymi (nazwy różnych funkcji) straciłem powiadomienia dla wszystkich wtyczek i link „zobacz szczegóły” dla wtyczek wp-repo zniknął. Korzystanie z czeków, ale umieszczanie w funkcjach mojego motywu. Php jest bardziej niezawodny bez ingerencji w powiadomienia o aktualizacji dla innych wtyczek. Wreszcie, nieobecność we wtyczce ma tę zaletę, że nie wymaga aktywowania tej wtyczki, aby działała. Wyłączenie wtyczki za pomocą tego kodu spowoduje oczywiście ponowne wyświetlenie powiadomień o aktualizacji.
— Philip Ingram

2

Wyłącz wszystkie powiadomienia o aktualizacji za pomocą kodu

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

Kod wyłączy powiadomienia o aktualizacji dla rdzenia WordPress, wtyczek i motywów.


Kluczem są „indywidualne wtyczki”
— Gangesh

@Gangesh, myślę, że chce wyłączyć niektóre powiadomienia na temat wtyczek
— Super Model
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.