Forma correcta de modificar el complemento

13

¿Cuál es la mejor manera de modificar un complemento? Con frecuencia quiero realizar 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 plugin solo y hacer mis cambios en otros lugares, como hacemos con los temas y los temas infantiles. ¿Puedo crear un complemento que requiera el complemento principal y lo anulará?

    
pregunta Mike Wheaton 14.07.2011 - 14:31

6 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 utilizan, más que las funciones del tema (y, de hecho, el archivo functions.php tanto de los padres como de los hijos se cargan, que causa problemas con archivos functions.php codificados incorrectamente en el tema principal o secundario).

    
respondido por el Chip Bennett 14.07.2011 - 14:40
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 conectada a WordPress con una acción, entonces es un asunto simple para usted hacer otro complemento que desenganche esa función con remove_action, y luego agregue la 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.

    
respondido por el Otto 19.07.2011 - 09:33
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, por lo que aún recibirá 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
*/
?>
    
respondido por el Chris_O 14.07.2011 - 14:36
2

Esto es relativamente fácil si el complemento está bajo el control de fuente Git debido a la naturaleza distribuida de Git, pero muchos complementos de WordPress (y todos los que están en el repositorio oficial) están en Subversion. Uso sucursales de proveedores y svn_load_dirs.php si realmente necesita 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 en un repositorio Git usted mismo 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.

    
respondido por el Annika Backstrom 17.07.2011 - 14:23
2

Estoy de acuerdo con 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 crear un espejo git.

Luego, solo hago una rama y confío mis cambios allí.

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

    
respondido por el scribu 19.07.2011 - 17:43
-2
  1. Use un filtro en el tema de su hijo si el complemento lo incluye

O

  1. Extienda la clase PHP desde el complemento en el tema de su hijo.
respondido por el Michelle 10.03.2018 - 10:56

Lea otras preguntas en las etiquetas