Nonaktifkan pemberitahuan pembaruan untuk masing-masing plugin

49

Apakah ada cara untuk menonaktifkan notifikasi pembaruan untuk plugin tertentu?

Sebagai pengembang plugin, saya memiliki beberapa plugin yang diinstal di situs pribadi saya menggunakan versi trunk svn untuk pengujian, tetapi plugin yang sama tersedia dari situs plugin. Dalam kasus ini WP menganggap versi terbaru sebagai versi yang paling baru diterbitkan dan terus-menerus mencoba memperingatkan saya bahwa pembaruan tersedia.

Saya masih ingin melihat notifikasi untuk pembaruan pada plugin lain, tetapi tidak ada artinya untuk terus-menerus mengabaikan Updates (2)pemberitahuan di header!

Caleb
sumber
Cukup buka file plugin dan ubah nomor versi menjadi sesuatu seperti 9,9.9
Bainternet
Maaf @ Netternet tapi itu akan terlalu meretas karena situs ini svn-checkout dan plugin berasal dari svn:externalreferensi ke kode pengembangan plugin. Memiliki file yang dimodifikasi secara lokal di server produksi bukanlah suatu pilihan. Filter Hameedullah berfungsi karena disimpan di repositori kode untuk situs tersebut.
Caleb
Ya saya melewatkan bagian tentang situs yang berjalan di svn
Bainternet
Anda juga dapat menggunakan plugin Disable Updates Manager oleh Websiteguy di WordPress.org.
matthew

Jawaban:

67

Sebagai contoh jika Anda tidak ingin Wordpress menampilkan pemberitahuan pembaruan untuk akismet, Anda akan melakukannya seperti:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Hameedullah Khan
sumber
1
Saya menempatkan itu di akhir ./wp-config.php, menggantikan jalur file plugin dan itu berhasil.
Caleb
6
Anda dapat meletakkannya di functions.php tema Anda jika tidak memungkinkan maka Anda dapat memasukkan file plugin terpisah. Dalam pandangan saya memasukkan ini ke wp-config.php bukan ide yang baik.
Hameedullah Khan
1
Saya benar-benar tidak ingin fungsi saya terkait dengan tema, dan menambahkan plugin sepertinya peretasan seperti hanya meretas plugin yang saya punya. Bisakah Anda menjelaskan mengapa menurut Anda wp-config.php bukan tempat yang baik untuk meletakkan peretasan konfigurasi khusus situs?
Caleb
Solusi yang sangat bagus, yang bekerja dengan baik untuk saya di functions.php. Sangat mudah untuk menambahkan lebih banyak plugin ke daftar hanya dengan menambahkan yang tidak disetel () ... Tip bagus Hameedullah ..
Lars Koudal
2
Bagi mereka dengan komentar yang sama dengan @Caleb, buat di folder wp-content folder baru bernama: mu-pluginsdan buat plugin kecil yang Anda jatuhkan di tempat. Untuk menambahkannya seperti yang disebutkan di atas oleh beberapa orang di wp-config.phpIso benar-benar tempat yang salah untuk dilakukan.
Charles
31

Jawaban Hameedullah Khan akan memberikan peringatan PHP. Sertakan ini jika klausa untuk memeriksa untuk memastikan itu adalah objek sebelum membatalkan respons untuk plugin itu.

'Peringatan: Mencoba mengubah properti non-objek'

Coba ini untuk menghindari peringatan (kode untuk file plugin itu sendiri):

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

Saya suka meletakkan ini di plugin yang sebenarnya. Karena saya hanya pernah menonaktifkan pembaruan pada plugin karena saya telah mengedit atau bercabang kode dan tidak ingin kehilangan suntingan pada pembaruan, saya sudah mengedit plugin dan karenanya tidak keberatan mengeditnya lagi. Itu membuat file fungsi saya sedikit lebih bersih. Tetapi jika Anda mau, Anda dapat meletakkannya di file fungsi dan manfaat metode tersebut adalah Anda dapat menghapus beberapa plugin dari pembaruan dengan menambahkan baris tidak disetel lainnya untuk plugin seperti itu (kode untuk functions.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' );
circlecube
sumber
Terima kasih untuk ini. Saya punya masalah menggunakan kode ini langsung di dalam plugin, tampak ok ketika itu adalah satu plugin tetapi segera setelah saya melakukannya dengan yang lain (nama-nama berbeda) saya kehilangan pemberitahuan untuk semua plugin dan tautan "lihat detail" untuk plugin wp-repo juga lenyap. Menggunakan cek Anda tetapi menempatkan di functions.php tema saya telah lebih dapat diandalkan tanpa campur tangan pemberitahuan pembaruan untuk plugin lain. Terakhir, tidak berada dalam plugin memiliki manfaat karena tidak memerlukan plugin itu untuk aktif agar dapat berfungsi. Menonaktifkan plugin dengan kode ini jelas akan menyajikan pemberitahuan pembaruan lagi.
Philip Ingram
2

Nonaktifkan Semua Perbarui Pemberitahuan dengan Kode

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

Kode akan menonaktifkan notifikasi pembaruan untuk inti WordPress, plugin, dan tema.

Super Model
sumber
"plugin individu" adalah kuncinya
Gangesh
@ Gangesh, saya pikir dia ingin menonaktifkan beberapa pemberitahuan plugin tertentu
Super Model