Maneira correta de modificar o plug-in


15

Qual é a melhor maneira de modificar um plugin? Frequentemente, quero fazer pequenas alterações em uma ou duas funções em um grande plugin. Isso é feito com facilidade, mas preciso usar comentários para marcar minhas alterações e modificar o plug-in novamente após uma atualização. Idealmente, gostaria de deixar o plug-in sozinho e fazer minhas alterações em outro lugar, como fazemos com temas e temas filhos. Posso criar um plug-in que exija o plug-in pai e o substitua?


1
Marque a opção "Estender sem modificar" . Considero que esta é a solução praticamente melhor. Confira neste link para mais detalhes - O caminho certo para personalizar um WordPress Plugin
Eugine Joseph

Respostas:


7

IMHO, a melhor abordagem é forçar o plug-in para manter as alterações ou enviar correções ao desenvolvedor do plug-in, para que as alterações façam parte do plug-in original.

Criar um "plug-in filho" realmente não é fácil. O conceito "Criança Tema" realmente se aplica aos arquivos de modelo que se acostumar, mais ainda do que as funções temáticas (e, na verdade, o functions.phparquivo a partir de pai e filho são carregados, o que faz causar problemas para inadequadamente codificados functions.phparquivos ou o filho ou pai Tema).


Os tipos de alterações que estou fazendo são específicos do site e, portanto, não acho que devolver ou enviar patches seria apropriado. Definitivamente vou manter isso em mente para melhorias mais gerais nos plugins.
Mike Wheaton

Mas bifurcar é basicamente o que você está fazendo . Basicamente, essas são suas opções: garfo ou remendo. O @Chris_O oferece uma boa maneira de conseguir atualizações automáticas do upstream, mantendo o seu plug-in bifurcado.
Chip Bennett

7

O caminho "certo" obviamente depende do plugin. Alguns plugins são mais fáceis de editar do que outros, mas a maioria dos plugins pode ser modificada por outros plugins.

Por exemplo, se um plug-in tem uma função conectada ao WordPress com uma ação, é simples criar outro plug-in que solte essa função com remove_action e adicione sua função de substituição. Esse tipo de método permitirá que você substitua funções individuais em plugins por suas próprias versões modificadas, sem modificar o plug-in original.

O mesmo conceito funciona com filtros, obviamente.


4

A melhor maneira seria cloná-lo e alterar o nome do plug-in no cabeçalho e alterar o nome do diretório. Dessa forma, você também pode ter o original instalado, mas não ativado, para receber alertas quando as atualizações forem lançadas.

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
?>

Isso ainda requer passar por novas versões do plug-in para encontrar alterações (suponho que uma ferramenta de comparação de versões ajudaria) e depois copiar essas alterações para o meu plug-in personalizado. Suponho que eu poderia baixar o plug-in e usar o SVN para mesclar as alterações com a minha versão personalizada.
115511 Mike Wheaton

2
Há um link direto para o arquivo diff no link do log de desenvolvimento na página de plug-ins. Por exemplo, aqui é diff gerado a partir do W3 Total Cache
Chris_O 14/07

3

Isso é relativamente fácil se o plug-in estiver sob controle de origem do Git devido à natureza distribuída do Git, mas muitos plug-ins do WordPress (e todos os que estão no repositório oficial) estão no Subversion. Uso ramificações de fornecedor e svn_load_dirs.php se realmente preciso modificar um plug-in, mas isso requer um nível de conforto razoavelmente alto com o Subversion.

Se o plug-in não expuser nenhum repositório, eu recomendo transformá-lo em um repositório Git e aplicar manualmente novas versões.

No final, os sistemas de controle de versão são a única maneira sensata de aplicar novamente as alterações nas novas versões upstream.


3

Concordo com a resposta de Annika Backstrom , mas gostaria de compartilhar minha solução preferida.

Como a maioria dos plugins está no svn, eu uso uma ferramenta chamada git-svn para criar um espelho do git.

Depois, apenas faço uma ramificação e comprometo minhas alterações lá.

Quando o plug-in é atualizado, basta retirar do repositório svn e entrar no meu ramo personalizado.

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.