Como personalizar um plugin mantendo a capacidade de atualização

8

Atualmente, estou trabalhando em uma grande atualização para um dos meus plugins do WordPress.

O plugin permite que o usuário escolha entre várias aparências disponíveis. Muitas vezes me pedem para criar uma capa personalizada. Para evitar que essa skin seja deletada na atualização, eu tenho que usar um hook do WordPress para desabilitar atualizações automáticas para o plugin. Isso obviamente não é o ideal, pois eu gostaria que eles ainda pudessem atualizar o plugin. O problema é o modo como o WordPress lida com atualizações - ele simplesmente exclui a pasta do plugin e instala a nova versão. Assim, removendo arquivos que não faziam parte da versão antiga.

Atualmente, a única maneira de contornar isso é ter duas pastas de skins - uma na pasta do plug-in e outra na pasta de uploads - essa é realmente a única maneira de oferecer isso aos meus usuários?

    
por Daniel Chatfield 20.07.2012 / 19:28

2 respostas

4

Muitos plug-ins usam /wp-content/custom-plugin-folder/ para armazenar dados de plug-in personalizados (o WPTouch vem à mente).

Use as constantes WP_CONTENT_URL e WP_CONTENT_DIR Docs para verificar a existência das constantes a existência da sua pasta e recuperar quaisquer skins disponíveis.

O artigo a seguir, embora não esteja diretamente relacionado a essa pergunta, explica a importância de plugins / temas para pesquisar traduções primeiro na pasta wp-content/languages antes de carregar seus próprios arquivos .mo empacotados. Vale a pena ler e esperamos que você aplique o conceito em sua próxima versão :)

  

Carregando arquivos de idioma do WordPress da maneira correta
< sup> http://www.geertdedeckere.be/
Gostaria de salientar que é importante carregar arquivos de idioma de usuário customizados de WP_LANG_DIR antes de carregar os arquivos de idioma   esse navio com o plugin . Quando vários arquivos mo são carregados para   mesmo domínio, a primeira tradução encontrada será usada. Desta forma, o   os arquivos de idiomas fornecidos pelo plug-in servirão como um substituto para   strings não traduzidas pelo usuário.

    
por brasofilo 20.07.2012 / 21:53
7

A outra maneira é que as pessoas adicionem seu próprio sub-plugin. Por exemplo, o código no seu plug-in principal que obtém as aparências pode ser algo como:

function get_available_skins() {
    $skins[] = '/includes/default-skin.css';
    $skins[] = '/includes/2012-skin.css';

    return apply_filters( 'get_available_skins', $skins );
}

Em seguida, os usuários podem criar um plug-in personalizado que fica ao lado do seu (ativado separadamente para não interferir na atualização) que faz o seguinte:

add_filter( 'get_available_skins', 'my_custom_skin' );
function my_custom_skin( $skins ) {
    $skins[] = '/my-custom-skin.css';

    return $skins;
}

Essa é exatamente a mesma maneira pela qual o WordPress usa ganchos para se tornar extensível. Não reinvente a roda.

(Obviamente, eu não sei com qual plug-in você está trabalhando, com o aspecto de uma capa personalizada ou com as coisas codificadas, então você terá que usar o código acima meramente como um modelo de como você pode refatorar seu próprio código.)

    
por EAMann 20.07.2012 / 19:44