Share
Embed
Desarrollando con WordPress y sus cositas
Wordpress es una herramienta bien conocida en Internet, tanto por usuarios como por desarrolladores. En esta sesión veremos como desarrollar y mantener un proyecto con Wordpress de manera limpia y ordenada. Hablaremos de instalación, control de versiones, desarrollo de plugins/temas, actualizaciones y rendimiento entre otras cosas. Si eres desarrollador o usuario avanzado de Wordpress, esto te interesa.
alvaromg
May 26, 2015
Transcript
55 slides
-
Álvaro de la Mata González CTO y Scrum Master Intexdev
SL Grupo Intexmedia @_alvaromg Desarrollando con Wordpress y sus cositas -
Disclaimer • No soy experto en WordPress • Lo que
os voy a contar es una forma más de gestionar proyectos con WordPress • Se aceptan sugerencias :) Desarrollando con Wordpress y sus cositas @_alvaromg -
¿Por qué utilizar Wordpress? • Es gratis • Es fácil
de usar • Se puede extender • Una gran comunidad activa Desarrollando con Wordpress y sus cositas @_alvaromg -
¿Por qué utilizar Wordpress? Producto mínimo viable Idea Desarrollo Lanzamiento
Idea Desarrollo Lanzamiento Aprender + iterar Acortar tiempo desarrollo Validar pronto la idea Desarrollando con Wordpress y sus cositas @_alvaromg -
Errores habituales al desarrollar con Wordpress Desarrollando con Wordpress y
sus cositas @_alvaromg -
Errores habituales al desarrollar con Wordpress • Escoger hosting de
mala calidad • No actualizar Wordpress, plugins y/o temas • Descuidar los backups • Demasiados plugins instalados Desarrollando con Wordpress y sus cositas @_alvaromg -
Errores habituales al desarrollar con Wordpress • Tocar los archivos
de Wordpress • Tocar las plantillas y/o plugins de terceros • Empezar con cualquier nombre de host • Despliegues manuales Desarrollando con Wordpress y sus cositas @_alvaromg -
Errores habituales al desarrollar con Wordpress Desarrollando con Wordpress y
sus cositas @_alvaromg + -
Wordpress Datos dinámicos (BDD y archivos) Temas Plugins Elementos que
deben convivir Desarrollando con Wordpress y sus cositas @_alvaromg -
Mantener el repositorio limpio Archivos de WordPress (git submodule) Nuestro
plugin Nuestro tema Configuración Desarrollando con Wordpress y sus cositas @_alvaromg -
Instalación completa (prod / dev) Sin control de versiones Sin
control de versiones Desplegado automáticamente Sin control de versiones Desarrollando con Wordpress y sus cositas @_alvaromg -
Primer paso mkdir wp-demo-project && cd wp-demo-project git init touch
README.md git add README.md git commit -m "Initial commit." Desarrollando con Wordpress y sus cositas @_alvaromg -
Añadiendo archivos de WordPress git submodule add git://github.com/WordPress/WordPress.git wp cd
wp git checkout 4.2.2 Desarrollando con Wordpress y sus cositas @_alvaromg -
Configuración de WordPress cp wp/wp-config-sample.php wp-config.php • Contiene configuraciones críticas
• Depende del entorno (dev, prod, ...) • Despliegue automático Desarrollando con Wordpress y sus cositas @_alvaromg -
Configuración de WordPress define('DB_NAME', 'helpdev'); define('DB_USER', 'helpdev'); define('DB_PASSWORD', 'helpdev'); define('DB_HOST',
'localhost'); define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/'); define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']); define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/../wp-content'); define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/wp-content'); Desarrollando con Wordpress y sus cositas @_alvaromg -
Configuración de WordPress git add wp-config.php git commit -m "Añadir
wp-config.php tuneado" Desarrollando con Wordpress y sus cositas @_alvaromg -
Servidor Web (Apache2) <VirtualHost *:80> ServerName helpdev-sandbox ServerAdmin webmaster@localhost DocumentRoot
/var/www/html/wp Alias /wp-content /var/www/html/wp-content <Directory /var/www/html/wp> AllowOverride All </Directory> </VirtualHost> Desarrollando con Wordpress y sus cositas @_alvaromg -
.gitignore *.log wp/.htaccess sitemap.xml sitemap.xml.gz wp-content/advanced-cache.php wp-content/backup-db/ wp-content/backups/ wp-content/blogs.dir/ wp-content/cache/
wp-content/upgrade/ wp-content/uploads/ wp-content/wp-cache-config.php wp-content/themes wp-content/plugins Desarrollando con Wordpress y sus cositas @_alvaromg -
Instalación fresca del proyecto cd /var/www/html git clone https://github.com/alvaromg/wp-demo-project --recurse-submodules
. cp wp-config.php wp/wp-config.php cp -r wp/wp-content . Desarrollando con Wordpress y sus cositas @_alvaromg -
¿Como empezar con el tema? • Copiar y modificar un
tema existente • Crear un tema desde cero • Utilizar temas hijos Desarrollando con Wordpress y sus cositas @_alvaromg -
Utilizando temas hijos • Herencia de temas • Extender un
tema existente con mínimo esfuerzo • Aprovechar las actualizaciones del tema padre helpdev.org/temas-hijos-en-wordpress/ Desarrollando con Wordpress y sus cositas @_alvaromg -
Creando un tema hijo <?php add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function
theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); } /* Theme Name: Phpcaceres demo Author: Phpcaceres Author URI: http://www.meetup.com/es/phpcaceres/ Template: twentyfifteen Version: 1.0 */ // reglas que modifican el tema padre Desarrollando con Wordpress y sus cositas @_alvaromg -
Widgets codex.wordpress.org/es:API_de_Widget • Añaden contenido o funcionalidades a los sidebars
Desarrollando con Wordpress y sus cositas @_alvaromg -
Plugins • Modificar comportamientos sin tocar WordPress • Reutilizar funcionalidades
entre proyectos • Encapsular librerías de terceros codex.wordpress.org/Writing_a_Plugin codex.wordpress.org/Plugin_API Desarrollando con Wordpress y sus cositas @_alvaromg -
Creando un plugin <?php /* Plugin Name: Phpcaceres demo Description:
Permite insertar vídeos de Youtube en contenido Version: 1.0 Author: Phpcaceres Author URI: http://www.meetup.com/es/phpcaceres/ Text Domain: wp-demo-plugin */ // actions & filters Desarrollando con Wordpress y sus cositas @_alvaromg -
Ajustando .gitignore otra vez ... ... wp-content/plugins/* !wp-content/plugins/wp-demo-plugin Desarrollando con
Wordpress y sus cositas @_alvaromg -
Hooks, Actions & Filters • Hooks: Son eventos predefinidos que
ocurren en la ejecución de WordPress (modificar BDD, enviar mail, salida, ...) • Actions & Filters: Definimos en funciones qué debe hacer WordPress en esos momentos Desarrollando con Wordpress y sus cositas @_alvaromg -
Insertar vídeos de Youtube // wp-content/plugins/wp-demo-plugin/wp-demo-plugin.php add_action ('the_content', 'render_videos'); function
render_videos($content) { $pattern = '/\[youtube=([^\]]+)\]/'; $replacement = '<div style="text-align:center;display:block;">'; $replacement.= '<iframe width="560" height="315"' . ' src="https://www.youtube.com/embed/$1"' . ' frameborder="0" allowfullscreen></iframe>'; $replacement.= '</div>'; $content = preg_replace($pattern, $replacement, $content); return $content; } Desarrollando con Wordpress y sus cositas @_alvaromg -
Guardar / obtener información Desarrollando con Wordpress y sus cositas
@_alvaromg add_option( $name, $value, $deprecated, $autoload ); get_option( $option ); update_option( $option_name, $newvalue ); delete_option( $option ); -
Utilizando Composer { "require": { "php" : ">=5.3.2", "zenstruck/string": "dev-master"
} } <?php // .. require_once(__DIR__ . '/../vendor/autoload.php'); Sin control de versiones Desarrollando con Wordpress y sus cositas @_alvaromg -
Ajustando .gitignore otra vez ... ... composer.phar composer.lock vendor Desarrollando
con Wordpress y sus cositas @_alvaromg -
Utilizando componentes en plugins <?php add_action ('the_content', 'wp_demo_plugin_render_content'); function wp_demo_plugin_render_content($content)
{ if (is_page() || is_single()) { return wp_demo_plugin_render_videos($content); } else { return wp_demo_plugin_snippet($content); } } // ... function wp_demo_plugin_snippet ($content) { $content = strip_tags($content); $content = zenstruck\string\truncate_word($content, 150); return '<p>'.$content.'</p>'; } Desarrollando con Wordpress y sus cositas @_alvaromg -
Instalación fresca del proyecto con Composer cd /var/www/html git clone
https://github.com/alvaromg/wp-demo-project --recurse-submodules . cp wp-config.php wp/wp-config.php cp -r wp/wp-content . php composer.phar update -o Desarrollando con Wordpress y sus cositas @_alvaromg -
Mejorando el rendimiento • Utilizar plugins imprescindibles. Quitar el resto.
• Plugins de caché • Proxy caché • Op Code Caching • Limpieza periódica de residuos Desarrollando con Wordpress y sus cositas @_alvaromg -
Mejorando la seguridad • Blanco de hackers • Mantén Wordpress,
temas y plugins actualizados • Hosting de calidad • Versiones actualizadas de Apache, PHP y MySQL • Quitar xmlrpc.php Desarrollando con Wordpress y sus cositas @_alvaromg -
Mejorando la seguridad • Eliminar/cambiar usuario "admin" • Usar contraseñas
seguras • Copias de seguridad periódicas (BDD y /wp-content) • Plugins para limitar logins fallidos Desarrollando con Wordpress y sus cositas @_alvaromg -
Cuando Wordpress ya no es suficiente Desarrollando con Wordpress y
sus cositas @_alvaromg -
Cuando Wordpress ya no es suficiente • Mover funcionalidades a
aplicaciones separadas • Wordpress puede convivir con otras aplicaciones Desarrollando con Wordpress y sus cositas @_alvaromg Wordpress Symfony2 plugin bundle proxy / vhost /blog / BDD BDD xml-rpc api