Desativar atualização automática para plug-in único


10

Eu tenho um plugin que sei que nunca quero atualizar. Estou ciente de que essa NÃO é uma prática recomendada, mas, nesse caso, deve ser feita. Existe alguma maneira de impedir que o WordPress me solicite a atualização automática de um plug-in específico (mas ainda alerta como normal para todos os outros plug-ins).


6
Aumente o número da versão no arquivo principal do plugin. 99.9... e também fazer essa mesma mudança dentro do arquivo leia-me para uma boa medida (embora eu não acho que é realmente necessário) ..
t31os

O ajuste dos números de versão ainda funcionará se o plug-in atualizar seus números de versão para algo como 1.10.1?
emc

Respostas:


11

você coloca isso nas funções do seu tema.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' );

Eu não entendo por que há um código de botão do Google +1 em sua resposta ... Provavelmente resta um ...
brasofilo

sobrou. Desculpa.
Tara

3
Esta solução lança um aviso ao ativar ou desativar qualquer outro plug-in. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
precisa saber é

gurung em qual versão do WP você está usando isso?
18715

7

A resposta do T31os estava certa: Aumente o número da versão no arquivo principal do plugin. 99,9 ... e também faça a mesma alteração dentro do arquivo leia-me para uma boa medida (embora eu não ache que seja realmente necessário) .. - t31os


5

Embora a resposta de Tara funcione bem, ela requer que o programador insira o caminho para o arquivo principal do plug-in e só funcionará enquanto esse tema específico estiver ativado. Uma solução alternativa pode ser assim:

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

versão de uma linha:

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

Coloque esse código na parte superior do .phparquivo principal do plug-in que você deseja desativar. Se você planeja usar isso mais de uma vez em seu site, altere o _1234nome do filtro e da função para um conjunto diferente de números aleatórios para evitar nomes de funções duplicados.

As chances são de que, se você estiver desativando as atualizações de um plug-in específico, é porque você o está editando por algum motivo ... portanto, a adição de algumas linhas extras a esse plug-in deve ser viável.


11
Esta é a melhor resposta na minha opinião, especialmente se você estiver desativando as atualizações porque você mesmo está editando o plugin. Obrigado EMC.
19418 Nathan

3

Eu estava recebendo avisos do PHP como 'gurung' mencionado acima quando instalei ou atualizei outros plugins quando estava usando esse código. Eu vi os avisos do PHP no WP 4.3.1.

Eu encontrei algumas outras postagens no stackexchange sobre o problema e criei uma função que percorre sua matriz de referências de plugins e primeiro verifica se já existe uma referência a esse plug-in (para evitar o aviso do PHP sobre objetos não) se não houver um) e se houver um objeto, ele será desmarcado exatamente como no código original.

Eu não fiz testes de unidade, mas estava recebendo avisos do PHP em todas as atualizações / instalações de plugins e agora não os vejo.

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

Ou você apenas o renomeou para que 'não' seja o mesmo plugin.
Você precisa renomear não apenas a pasta, mas também no cabeçalho leia-me e plug-in.


1

Eu herdei um site com a implementação pelo npc do snip de código de tara, que gerou erros por comentário de gurung. Me deixou louco. Eu hesitava em editar o código em um plug-in, até perceber que o snipper é personalizado de qualquer maneira.

Para eliminar os erros, altere isso:

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

para isso:

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

Pode ser óbvio para alguns, mas a chave é que ele já é personalizado, para que você possa editá-lo e provavelmente não será substituído por atualizações, porque o objetivo é impedir que você atualize o plugin.


0

Você pode impedir atualizações simplesmente renomeando a pasta do plug-in (ou, no caso de um plug-in de arquivo único, renomeando esse arquivo PHP). Esta é de longe a solução mais simples. Além disso, essa abordagem torna o fato de que você alterou o código transparente para desenvolvedores futuros, incluindo "você do futuro".


0

Uma versão superior no arquivo principal do plug-in é a melhor, mas apenas ao adicionar um hack especial. Chama um número nulo / indefinido e permanece nessa versão. Exemplo:

Versão:

Isso garantirá que em 2100 não seja atualizado após 9.9.9 ou algo assim. É uma abordagem simples para plug-ins abandonados que em algum momento será substituída.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.