¿Cuál es su flujo de trabajo para crear sitios web basados ​​en WordPress?

5 minutos de lectura

avatar de usuario
tonio

Estoy comenzando un proyecto donde 2 personas desarrollarán un sitio en WordPress. También puede ser necesario tener una configuración de servidor de desarrollo donde mi cliente pueda ver los cambios en el sitio antes de que lo publiquemos. También puede haber cambios en la base de datos (como la configuración de wordpress) que deben impulsarse desde el desarrollo hasta la producción.

Me pregunto cuál es el mejor flujo de trabajo para esto. Entiendo los conceptos generales porque normalmente desarrollo en Rails y, por lo tanto, ejecuto migraciones y uso capistrano y git, pero me gustaría tener el mismo flujo de trabajo ajustado para un sitio de WordPress. ¿Algún desarrollador experimentado de WordPress por ahí?

Actualizar: Tal vez no lo dejé lo suficientemente claro, pero entiendo wordpress. He creado 5-10 blogs de wordpress y funcionalidad personalizada. Sin embargo, Nunca he trabajado en un sitio de wordpress con varias personas ni he tenido que lidiar con un entorno de desarrollo, preparación y producción.

¡Gracias!

Para lidiar con este tipo de entorno DEV y PRODUCCIÓN, he escrito un script de Perl para ayudarme con lo que de otro modo sería un trabajo manual. Le he dado nombres familiares a ciertos pasos, así que recuerdo ejecutarlos en el orden correcto. Solo tengo DEV bajo SVN. Creo un entorno de PRODUCCIÓN cada vez con este script. De esa manera no tengo que preocuparme por mantener 2 ramas de código.

Estoy usando SVN, así que elijo un nuevo directorio de pago (como /tmp/foobar) de mi código DEV. No va a estar allí por mucho tiempo.

Paso opcional 0: estructuras de base de datos diff

mysqldump -d -u USER -pPASS mydotcom > production.sql
mysqldump -d -u USER -pPASS mydotcom_dev > development.sql
vim -d production.sql development.sql

A veces, los complementos agregarán tablas, y esto lo mostrará. De lo contrario, reproduzco los cambios realizados en las tablas (instalo un complemento) cuando no vale la pena diferenciar ciertas tablas y copiar declaraciones SQL.

paso 1 limpio: el script elimina todos los archivos en el directorio actual, haga un nuevo svn checkout de la rama DEV. Este pago nuevo se transformará en el código de PRODUCCIÓN y se copiará en su webroot.

paso 2 make: perl ejecuta una búsqueda vim y reemplaza el nombre de la base de datos en wpconfig.php. La búsqueda y el reemplazo se realizan con la misma facilidad en perl.

system('vim -c "%s/define(\'DB_NAME\', \'mydotcom_dev\'/define(\'DB_NAME\', \'mydotcom\'/g | w | q" wp-config.php'); 

Elimine el directorio de carga de archivos locales (para que no sobrescribamos el de PRODUCCIÓN). wpcontent/uploads Creo que está en una instalación estándar.

Otro buscar y reemplazar en todos los archivos de texto dentro del proyecto que tienen mi URL DEV, por ejemplo

vim -c "%s/dev\.mydot\.com/www.mydot.com/g | w | q FILENAME.php

Paso 3 instalar. Haga una copia de seguridad de wpcontent/uploads con dircopy() para estar seguro. Haga una copia directa () de este directorio limpio en la raíz web de PRODUCCIÓN. Elimine todos los directorios .svn dentro de webroot de la siguiente manera:

find /PRODUCTION/WEBROOT -ignore_readdir_race -name .svn -exec rm -fr {} \; >/dev/null 2>&1

Ahora su código DEV se ha transformado en su código de PRODUCCIÓN reemplazando todas las URL codificadas y manteniéndose seguras en el directorio de cargas que no está en SVN. Incluso puede hacer que se detenga e inicie apache por usted también. Espero que mi solución ayude a resolver su problema.

avatar de usuario
kovshenin

Flujo de trabajo, ¿eh? Bueno, trabajé con un par de personas en sitios web complejos de WordPress y todavía lo hago. Usamos Subversion y Trac la mayor parte del tiempo y rara vez se trata de hacer algunos cambios en la base de datos. Solo durante la configuración, supongo.

Aquí está el guión:

#!/bin/sh
echo Copying $1 to $2 ...
mysqldump -uroot -pPASSWORD $1 > /tmp/tempdump.sql
mysql -uroot -pPASSWORD -e "CREATE DATABASE $2;"
mysql -uroot -pPASSWORD $2 < /tmp/tempdump.sql
rm -f /tmp/tempdump.sql
echo Complete

Es demasiado simple, lo sé, pero así es como me gusta 😉 No olvides reemplazar PASSWORD con tu contraseña y tal vez no quieras usar el usuario root para estos propósitos (aunque realmente no me importa , por eso lo hago).

Guarde el archivo en copydb.sh por ejemplo, luego chmod +x copydb.sh y luego puede ejecutarlo así: ./copydb.sh database1 database2 😉

  • ¿Utiliza sitios de desarrollo o solo un sitio de producción? si usa un sitio de desarrollo, tendrá que copiar la configuración de la base de datos cada vez que agregue un complemento. Sin embargo, probablemente no sea demasiado doloroso, solo quería obtener algunos comentarios sobre si fue una mala idea o no.

    – Tony

    10 de julio de 2009 a las 19:10

WordPress tiende a ser bastante modular; Creo que un control de fuente ayudará, y tal vez escribir un script para automatizar la carga en un sitio de vista previa. Puede conservar una carpeta que solo actualiza SVN y una carpeta de trabajo.

WordPress es modular en el sentido de que puede usar plantillas de página y widgets, así como complementos. Puede escribir partes de su sitio como widgets y complementos, y juntarlos para que funcione. Para páginas con diseño personalizado o código PHP, puede usar Plantillas de página. Rara vez necesita tocar los archivos principales de WordPress (ni debería hacerlo nadie), por lo que si se apega a las herramientas de extensión proporcionadas por WordPress, estaría bien.

  • ok, entiendo wordpress. Tal vez debería haber dejado eso más claro. esta pregunta es específicamente sobre el flujo de trabajo y estoy buscando una respuesta con detalles. espero que en los casos en que necesite escribir guiones, la gente pueda proporcionar enlaces

    – Tony

    2 de julio de 2009 a las 17:43

Es posible que desee probar el complemento Administrador de roles para la administración de permisos y WordPress llave en mano para una instalación rápida de wp en una máquina virtual. Sin embargo, no tengo ni idea de algo que podría tener un papel similar al de git.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad