Nonaktifkan Pembaruan Otomatis untuk Plugin Tunggal

10

Saya memiliki plugin yang saya tahu tidak ingin saya perbarui. Saya sadar bahwa ini BUKAN praktik terbaik, tetapi dalam hal ini harus dilakukan. Apakah ada cara untuk menghentikan WordPress dari mendorong saya untuk memperbarui secara otomatis plugin tertentu (tetapi tetap waspada seperti biasa untuk semua plugin lainnya).

GavinR
sumber
6
Tambah nomor versi di dalam file utama plugin .. mis. 99.9... dan juga membuat perubahan yang sama di dalam file readme untuk ukuran yang baik (meskipun saya tidak berpikir itu benar-benar diperlukan) ..
t31os
Apakah menyesuaikan nomor versi masih berfungsi jika plugin memperbarui nomor versinya menjadi seperti ini 1.10.1?
emc

Jawaban:

11

Anda menempatkan ini di functions.php tema Anda

// Disable update notification for individual plugins - see my example of plugin block-spam-by-math-reloaded as to how to use this function

function filter_plugin_updates( $value ) {
    unset( $value->response['plugin-folder-name/plugin-file-name.php'] );    
    return $value;
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
Tara
sumber
Saya tidak mengerti mengapa ada kode tombol Google +1 dalam jawaban Anda ... Mungkin yang tersisa ...
brasofilo
tersisa. Maaf.
Tara
3
Solusi ini memberikan peringatan sambil mengaktifkan atau menonaktifkan plugin lainnya. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
gurung
gurung versi WP yang Anda gunakan ini?
fedmich
7

Jawaban T31os benar: Tingkatkan nomor versi di dalam file utama plugin .. mis. 99.9 ... dan juga membuat perubahan yang sama di dalam file readme untuk mengukur yang baik (meskipun saya pikir itu tidak diperlukan) .. - t31os

GavinR
sumber
5

Sementara jawaban Tara bekerja dengan baik, ia membutuhkan programmer untuk memasukkan jalur ke file plugin utama dan hanya berfungsi saat tema tertentu diaktifkan. Solusi alternatif mungkin terlihat seperti ini:

add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}

versi satu baris:

add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });

Tempatkan kode ini di bagian atas .phpfile utama plugin yang ingin Anda nonaktifkan. Jika Anda berencana untuk menggunakan ini lebih dari satu kali di situs Anda, ubah _1234filter dan nama fungsi menjadi serangkaian angka acak yang berbeda untuk menghindari duplikat nama fungsi.

Kemungkinannya adalah jika Anda menonaktifkan pembaruan untuk plugin tertentu, itu karena Anda mengeditnya untuk beberapa alasan ... jadi menambahkan beberapa baris tambahan ke plugin itu harus dapat dilakukan.

emc
sumber
1
Ini adalah jawaban terbaik menurut saya, terutama jika Anda menonaktifkan pembaruan karena Anda mengedit plugin sendiri. Terima kasih emc.
Nathan
3

Saya mendapatkan Peringatan PHP seperti 'gurung' yang disebutkan di atas ketika saya menginstal atau memperbarui plugin lain ketika saya menggunakan kode ini. Saya melihat Peringatan PHP di WP 4.3.1.

Saya menemukan beberapa posting lain di stackexchange tentang masalah ini dan saya telah datang dengan fungsi yang memutar melalui array referensi plugin Anda dan terlebih dahulu memeriksa untuk melihat apakah sudah ada referensi ke plugin itu (untuk menghindari peringatan PHP pada non-objek jika tidak ada satu) dan jika ada objek itu akan menghapusnya seperti kode aslinya.

Saya belum melakukan tes unit tetapi mendapat peringatan PHP di setiap pembaruan / pemasangan plugin dan sekarang saya tidak melihatnya.

function filter_plugin_updates( $value ) {

  // Add references to plugins you want to disable update notices for in the $plugins array
  $plugins = array(
    'k-elements/setup.php'
  );

  foreach( $plugins as $plugin ) {
    if ( isset( $value->response[$plugin] ) ) {
      unset( $value->response[$plugin] );
    }
  }

  return $value;

}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
si penipu
sumber
1

Atau Anda tinggal ganti namanya jadi 'bukan' plugin yang sama.
Anda perlu mengganti nama tidak hanya folder tetapi juga di header readme dan plugin.

anmari
sumber
1

Saya mewarisi sebuah situs dengan implementasi kode sandi tara npc, yang melemparkan kesalahan per komentar gurung. Membuatku gila. Saya ragu-ragu untuk mengedit kode dalam sebuah plugin, sampai saya menyadari bahwa snipper itu custom.

Untuk menghilangkan kesalahan, ubah ini:

unset($value->response[ plugin_basename(__FILE__) ]);

untuk ini:

if($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
}

Ini mungkin jelas bagi sebagian orang, tetapi kuncinya adalah itu sudah kustom sehingga Anda dapat mengeditnya, dan mungkin tidak akan ditimpa oleh pembaruan karena intinya adalah membuat Anda tidak memperbarui plugin.

Pengacara
sumber
0

Anda dapat mencegah pembaruan hanya dengan mengganti nama folder plugin (atau, dalam hal plugin file tunggal, mengganti nama file PHP itu). Sejauh ini, ini adalah solusi paling sederhana. Selain itu, pendekatan ini membuat fakta bahwa Anda mengubah kode transparan untuk pengembang masa depan, termasuk "masa depan Anda".

nydame
sumber
0

Versi yang lebih tinggi di file plugin utama adalah yang terbaik, tetapi hanya ketika menambahkan peretasan khusus. Itu memanggil nomor nol / tidak ditentukan dan kemudian akan tetap dalam versi itu. Contoh:

Versi: kapan:

Ini akan memastikan bahwa pada tahun 2100 itu tidak akan diperbarui setelah 9,9.9 atau sesuatu seperti itu. Ini adalah pendekatan sederhana untuk plugin yang ditinggalkan yang kadang-kadang akan diganti.

Patryk Padus
sumber