Tek Eklenti için Otomatik Güncellemeyi Kapat


10

Asla güncellemek istemediğimi bildiğim bir eklentim var. Bunun en iyi uygulama OLMADIĞININ farkındayım, ancak bu durumda yapılması gerekiyor. WordPress'in belirli bir eklentiyi otomatik olarak güncellememi istemesini engellemenin bir yolu var mı (ancak diğer tüm eklentiler için hala normal olarak uyar).


6
Eklentinin ana dosyasının içindeki sürüm numarasını artırın .. örn. 99.9... ve aynı zamanda iyi bir ölçü için benioku dosyasında aynı değişikliği yapmak (gerçi aslında gerekli olduğunu sanmıyorum) ..
t31os

Eklenti sürüm numaralarını benzer bir şekilde güncellerse sürüm numaralarını ayarlamak yine de çalışır 1.10.1mı?
emc

Yanıtlar:


11

bunu temanızın işlevlerine yerleştirirsiniz. php

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

Cevabınızda neden bir Google +1 düğmesi kodu olduğunu anlamıyorum ... Muhtemelen geride kaldı ...
brasofilo

kaldı. Afedersiniz.
Tara

3
Bu çözüm, diğer eklentileri etkinleştirirken veya devre dışı bırakırken bir uyarı verir. 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 WP'nin hangi sürümünü kullanıyorsunuz?
fedmich

7

T31os'un yanıtı doğruydu: Eklentinin ana dosyasının içindeki sürüm numarasını artırın .. örn. 99.9 ... ve iyi bir ölçüm için benioku dosyasında da aynı değişikliği yapın (aslında bunun gerekli olduğunu düşünmüyorum) .. - t31os


5

Tara'nın yanıtı iyi çalışıyor olsa da, programcının ana eklenti dosyasının yolunu girmesini gerektirir ve yalnızca belirli bir tema etkinleştirildiğinde işlevseldir. Alternatif bir çözüm şöyle görünebilir:

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

tek satırlı sürüm:

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

Bu kodu, .phpdevre dışı bırakmak istediğiniz eklentinin ana dosyasının üstüne yerleştirin . Bunu sitenizde birden fazla kullanmayı planlıyorsanız, _1234yinelenen işlev adlarından kaçınmak için filtre ve işlev adını farklı bir rasgele sayılar kümesiyle değiştirin.

Muhtemelen, belirli bir eklenti için güncellemeleri devre dışı bırakıyorsanız, bunun nedeni bir nedenden dolayı düzenleniyor olmanızdır ... bu nedenle bu eklentiye birkaç satır daha eklemeniz uygun olmalıdır.


1
Bu, özellikle eklentiyi kendiniz düzenlediğiniz için güncellemeleri devre dışı bırakıyorsanız, bence en iyi cevap. Teşekkürler emc.
Nathan

3

Bu kodu kullanırken diğer eklentileri yüklediğimde veya güncellediğimde yukarıda belirtilen 'gurung' gibi PHP Uyarıları alıyordum. WP 4.3.1'de PHP Uyarılarını gördüm.

Sorun hakkında stackexchange ile ilgili başka yayınlar buldum ve eklenti referansları diziniz boyunca döngüler bir işlev ile geldim ve ilk kez zaten bu eklentiye bir referans olup olmadığını görmek için kontrol (nesneler üzerinde PHP uyarı önlemek için) eğer bir tane yoksa) ve bir nesne varsa, tıpkı orijinal kod gibi ayarını kaldırır.

Birim testleri yapmadım ama eklentilerin her güncellemesinde / kurulumunda PHP uyarıları alıyordum ve şimdi onları görmüyorum.

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

1

Ya da sadece aynı eklenti 'değil' olarak yeniden adlandırın.
Yalnızca klasörü değil, aynı zamanda benioku ve eklenti başlığını da yeniden adlandırmanız gerekir.


1

NPC'nin tara'nın kod snip uygulamasını uyguladığı ve gurung'un yorumuna göre hatalar atan bir siteyi miras aldım. Beni deli etti. Keskin nişancı zaten özel olduğunu fark edene kadar bir eklenti kodu düzenlemek için tereddüt vardı.

Hataları ortadan kaldırmak için şunu değiştirin:

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

buna:

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

Bazıları için açık olabilir, ancak anahtar, zaten düzenleyebilmeniz için zaten özel olmasıdır ve muhtemelen güncellemeler tarafından üzerine yazılmaz çünkü tüm mesele eklentiyi güncellemenizi engellemektir.


0

Eklenti klasörünü yeniden adlandırarak (veya tek dosyalı bir eklenti söz konusu olduğunda bu PHP dosyasını yeniden adlandırarak) güncellemeleri önleyebilirsiniz. Bu açık ara en basit çözüm. Buna ek olarak, bu yaklaşım, kodu "gelecekteki siz" de dahil olmak üzere gelecekteki geliştiricilere göre şeffaf hale getirmenizi sağlar.


0

Ana eklenti dosyasında daha yüksek bir sürüm en iyisidir, ancak yalnızca özel bir saldırı eklerken. Bir null / undefined numarası çağırır ve bu sürümde kalır. Misal:

Sürüm:

Bu, 2100'de 9.9.9 veya benzeri bir şeyden sonra güncellenmemesini sağlayacaktır. Bazen değiştirilecek terk edilmiş eklentiler için basit bir yaklaşımdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.