Forma adecuada de modificar el complemento

15

¿Cuál es la mejor manera de modificar un complemento? Con frecuencia quiero hacer pequeños cambios en una o dos funciones dentro de un complemento grande. Esto se hace fácilmente, pero tengo que usar comentarios para marcar mis cambios y modificar el complemento nuevamente después de una actualización. Idealmente, me gustaría dejar el complemento solo y hacer mis cambios en otro lugar, al igual que lo hacemos con los temas y los temas secundarios. ¿Puedo hacer un complemento que requiera el complemento principal y lo anule?

Mike Wheaton
fuente
1
Verifique "Extender sin modificar" . Considero que esta es la solución prácticamente mejor. Consulte este enlace para obtener más detalles - La forma correcta de personalizar un complemento de WordPress
Eugine Joseph

Respuestas:

7

En mi humilde opinión, el mejor enfoque es bifurcar el complemento para mantener sus cambios, o bien enviar parches al desarrollador del complemento, para que sus cambios formen parte del complemento original.

Crear un "complemento infantil" realmente no es fácil. El concepto "Tema infantil" realmente se aplica a los archivos de plantilla que se usan, más que las funciones del tema (y, de hecho, el functions.phparchivo de Parent y Child se carga, lo que causa problemas para los functions.phparchivos codificados incorrectamente en Child o Parent Tema).

Chip Bennett
fuente
Los tipos de cambios que estoy haciendo son específicos del sitio, por lo que no creo que sea apropiado bifurcar o enviar parches. Definitivamente los tendré en cuenta para mejoras más generales en los complementos.
Mike Wheaton
Pero bifurcar es básicamente lo que ya estás haciendo . Básicamente, esas son sus opciones: tenedor o parche. @Chris_O ofrece una buena manera de poder realizar actualizaciones automáticas desde la parte superior, mientras mantiene su complemento bifurcado.
Chip Bennett
7

La forma "correcta" obviamente depende del complemento. Algunos complementos son más fáciles de editar que otros, pero la mayoría de los complementos pueden ser modificados por otros complementos.

Por ejemplo, si un complemento tiene una función enganchada en WordPress con una acción, entonces es simple que cree otro complemento que desenganche esa función con remove_action, y luego agregue su función de reemplazo. Este tipo de método le permitirá reemplazar funciones individuales en complementos con sus propias versiones modificadas, sin modificar el complemento original.

El mismo concepto funciona con filtros, obviamente.

Otón
fuente
4

La mejor manera sería simplemente clonarlo y cambiar el Nombre del complemento en el encabezado y cambiar el nombre del directorio. De esta manera, también podría tener el original instalado pero no activado para que aún reciba alertas cuando se publiquen las actualizaciones.

<?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
*/
?>
Chris_O
fuente
Esto todavía requiere pasar por nuevas versiones del complemento para encontrar cambios (supongo que una herramienta de comparación de versiones ayudaría) y luego copiar esos cambios en mi complemento personalizado. Supongo que podría descargar el complemento y usar SVN para combinar los cambios con mi versión personalizada.
Mike Wheaton
2
Hay un enlace directo al archivo diff en el enlace del registro de desarrollo en la página de complementos. Por ejemplo, aquí se genera diff de W3 Total Cache
Chris_O
3

Esto es relativamente fácil si el complemento está bajo el control de origen de Git debido a la naturaleza distribuida de Git, pero muchos complementos de WordPress (y todos los del repositorio oficial) están en Subversion. Uso ramas de proveedores y svn_load_dirs.php si realmente necesito modificar un complemento, pero esto requiere un nivel de comodidad razonablemente alto con Subversion.

Si el complemento no expone ningún repositorio, recomendaría convertirlo usted mismo en un repositorio Git y aplicar manualmente nuevas versiones.

Al final, los sistemas de control de versiones son la única forma sensata de volver a aplicar los cambios a las nuevas versiones anteriores.

Annika Backstrom
fuente
3

Estoy de acuerdo con la respuesta de Annika Backstrom , pero me gustaría compartir mi solución preferida.

Como la mayoría de los complementos están bajo svn, utilizo una herramienta llamada git-svn para hacer un espejo git.

Luego, simplemente hago una rama y confirmo mis cambios allí.

Cuando el complemento se actualiza en sentido ascendente, solo saco del repositorio svn y me fusiono en mi rama personalizada.

scribu
fuente