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!

Caleb
źródło
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' );
Hameedullah Khan
źródło
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' );
koło zamachowe
źródło
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.

Super Model
źródło
Kluczem są „indywidualne wtyczki”
Gangesh
@Gangesh, myślę, że chce wyłączyć niektóre powiadomienia na temat wtyczek
Super Model