Como evitar conflitos de nome de plugin do notificador de atualização?

4

Eu envolvi um hack rápido como um plugin para adicionar o Google Analytics ao meu site. Chamei-o de "Google Analytics" e, com certeza, o WP me ofereceu para atualizar meu plugin v0.1 para algum plugin aleatório do repositório de plugins.

Eu me lembro vagamente de ter sido levantado algumas vezes em torno de WP 2.7 a 3.0. Existe uma nova API disponível em algum lugar para desabilitar isso ou a única maneira de evitar isso é prefixar os nomes dos plugins (não o nome do arquivo, mas o nome real, como mostrado na tela Plugins) para torná-los exclusivos?

No meu caso de uso específico, o plug-in está em mc-ga/mc-ga.php e é chamado de "Google Analytics", junto com alguns outros metades campos no início do cabeçalho do arquivo de plug-in. WP produz um aviso de atualização com base no "Google Analytics" (não consegui localizar um arquivo mc-ga.php do plugin no repositório).

O WP permite adicionar um campo extra do qual não conheço, por ex. um repo URL ou algo verdadeiramente único, para evitar tais conflitos?

    
por Denis de Bernardy 29.10.2013 / 11:07

4 respostas

5

Você pode remover seu plug-in da lista updateble com:

add_action( 'plugins_loaded', function(){
    add_filter( 'site_transient_update_plugins', function ( $value ) 
    {
        if( isset( $value->response['google-analytics/google-analytics.php'] ) )
            unset( $value->response['google-analytics/google-analytics.php'] );
        return $value;
    });
});

Adicionar este filtro elimina totalmente nosso plug-in homônimo das verificações de atualização. E isso supõe que estamos fazendo as atualizações manualmente através de uploads simples do FPT - ou similar. Mas há muitos fatores, como discutido em Se eu renomear um plugin (em seu arquivo php principal) ainda recebo notificações de atualização? . De acordo com a descrição OP (mesmo nome, slug diferente), sem usar um filtro, talvez o melhor seja configurar o plugin Version header para um número maior ou usando um número menos convencional como yyyy.mm.dd .

Se estivermos definindo nosso próprio relatório , acredito que não haverá conflitos.

    
por brasofilo 29.10.2013 / 11:34
0

O que eu sugiro é: antes de fazer o seu plugin, primeiro verifique se o nome que você vai dar já existe no repositório de plugins do WordPress . Se não, então você pode seguir em frente e desenvolver o plugin.

Caso exista, dê um nome diferente ao seu plugin. Como a atualização é baseada no nome, não é possível gerenciar dois plug-ins diferentes com o mesmo nome. O WordPress faz esta opção de atualização automaticamente a partir do repositório oficial.

    
por sun 29.10.2013 / 11:36
0

Adicionando este para a posteridade, caso alguém mais precise:

if (!defined('STRICTER_PLUGIN_UPDATES')) define('STRICTER_PLUGIN_UPDATES', false);

# ============
# WP Updates
# ============

if (STRICTER_PLUGIN_UPDATES) :

# - Drop plugin upgrades when the slugs don't match

add_filter('site_transient_update_plugins', function($updates) {
    if (!$updates->response) return $updates;

    foreach ($updates->response as $key => $response) {
        $slug = strpos($key, '/') !== false ? dirname($key) : basename($key, '.php');
        if ($slug != $response->slug) {
            unset($updates->response[$key]);
        }
    }

    return $updates;
});

endif; # STRICTER_PLUGIN_UPDATES
    
por Denis de Bernardy 29.10.2013 / 14:02
0

Se você tiver um plug-in personalizado para um site, nomeie o nome do site como um prefixo.

Certamente não permitiremos que um plug-in chamado "Example.com - Google Analytics" seja inserido no diretório WordPress.org.

Além disso, adicione um campo "Plugin URI" ao cabeçalho do plug-in. O URI do plug-in é usado como parte do processo de correspondência e fornece algo mais exclusivo do que o nome para ser comparado.

    
por Otto 29.10.2013 / 14:55