SlideShare una empresa de Scribd logo
1 de 16
WordPress 
Prácticas Recomendadas 
Laura Melo, Freelance WordPress Developer
¿Qué es 
“Prácticas Recomendadas”? 
Técnicas o métodos recomendado que 
nos permiten llegar a mejores 
resultados o replicar casos de éxito. 
Se obtiene de la experiencia y 
estandarización de los procesos.
Aprender - Consultar - Compartir 
● Leer el Código 
● Codex, Code Reference 
● Handbook: WordPress Coding Standards 
● Mantenerse actualizado de las novedades (ie: Blog) 
● Participar en los foros de soporte de WP y Plugins 
como: 
http://es.forums.wordpress.org/ o http://wordpress.stackexchange.com/
Aprender - Consultar - Compartir 
● Participar en la Comunidad Local (como @wpargentina) 
● Compartir el Código 
● Reportar bugs 
● Traducir
Recomendaciones Generales 
● Elegir cuidadosamente Plugins y Themes a utilizar 
● Mantener WordPress y Plugins Actualizados. No dejar 
instalaciones viejas que no uses, si no lo usas eliminalo 
y si lo usas actualizalo. 
● Hacer Backups regulares y antes de alguna tarea crítica.
Recomendaciones Generales 
● Usar Controlador de Versiones (GIT / SVN) 
● No modificar los archivos del core de WordPress y de 
los Plugins (usar hooks y reportar bugs) 
● Usar Child-Theme para modificar themes de terceros.
Recomendaciones para el Código 
Usar las funciones y librerías que ofrece WordPress, por 
ejemplo: 
● current_time(), no date_default_timezone_set() 
● Usar el objeto $wpdb y sus métodos para interactuar con la base de 
datos. 
● Usar hooks (ganchos): Acciones y Filtros 
Actions (Codex Action Reference) 
Filters (Codex Filter Reference)
Recomendaciones para el Código 
Usar las funciones y librerías que ofrece WordPress, por 
ejemplo: 
● wp_remote_get / wp_remote_post en vez de curl 
● get_template_part() en vez require() o include() 
● media_handle_upload() para subir archivos 
● Cargar scripts y hojas de estilos con “Enqueue Functions / Enqueue 
Actions” 
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
Recomendaciones para el Código 
Evitar conflictos de nombres de función: prefijo de 
funciones, o encapsular las funciones dentro de clases. 
Fatal error: Cannot redeclare get_the_post_terms() (previously declared in.... 
Si el plugin se llama “Wordpress Manda Mail” podés usar “wmm_” como prefijo 
de todas tus funciones (y clases de css), por ejemplo wmm_manda_mail() 
class Wmm_Mailer { 
static function send( $post_ID ) { 
$friends = 'jhondoe@example.org'; 
mail($friends,"New post!", 'Check my new post in '.get_permalink($post_ID )); 
return $post_ID; 
} 
} 
add_action( 'publish_post', array( 'Wcc_Mailer', 'send' ));
Recomendaciones de Seguridad 
● Limitar el Acceso: 
No todos necesitan ser administradores, ni tener acceso ftp o ssh. 
Elegí los perfiles adecuados para la tarea que tenga que hacer el usuario, 
y eliminarlos cuando ya no los necesiten. 
● Contraseñas seguras: 
Usar admin o 123456 no es una buena idea. 
Contraseñas largas, con numeros, simbolos, mayusculas, etc. 
● No usar el nombre “admin” para el usuario 
administrador.
Recomendaciones de Seguridad 
Vulnerabilidades XSS: sanear y validar entradas y 
escapar salidas. 
● Nunca confiar en el usuario. 
● Escapar todo lo que provenga de fuentes externas 
(bases de datos, usuarios, twitter, etc) y cuanto más 
tarde mejor (convención). 
● Sanear está bien, pero validar/rechazar es mejor.
Recomendaciones de Seguridad 
● Prevenir el acceso directo a los archivos: 
if ( ! defined( 'ABSPATH' ) ) exit; 
● Eliminar todos los “warnings” y “notices”: 
define( WP_DEBUG, true ); 
o Plugin Debug Bar
Recomendaciones de Seguridad 
Nonce (número que se usa una sola vez) 
● Si utiliza para fines de verificación, es una clave única o 
token, que solo puede ser utilizado para la acción 
definida, y solo en esa instalación. 
● Crear: wp_create_nonce($action) 
● Verificar: wp_verify_nonce( $nonce, $action );
Recomendaciones de Performance 
● Usar plugin de cache 
WP Super Cache, W3 Total Cache 
● Gzip Compression 
(testear http://www.gidnetwork.com/tools/gzip-test.php) 
Editar el archivo .htaccess: 
# BEGIN GZIP 
<ifmodule mod_deflate.c> 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css 
application/x-javascript application/javascript 
</ifmodule>
Recomendaciones de Performance 
● Vaciar papelera: 
define ('EMPTY_TRASH_DAYS', 7); 
● Limitar la cantidad de Revisiones a guardar: 
define( 'WP_POST_REVISIONS', 3 ); 
● Optimizar Imágenes antes de subirlas.
GRACIAS!

Más contenido relacionado

Similar a Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014

Webinar - Seguridad en WordPress
Webinar - Seguridad en WordPressWebinar - Seguridad en WordPress
Webinar - Seguridad en WordPressArsys
 
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...Asociación Webmasters Cantabria
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...Darío BF
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversionEudris Cabrera
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupalcamposer
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Juampy NR
 
[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma javaEudris Cabrera
 
Curso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en DrupalCurso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en DrupalAlberto Permuy Leal
 
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESS
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESSWHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESS
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESSESET España
 

Similar a Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014 (20)

Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Webinar - Seguridad en WordPress
Webinar - Seguridad en WordPressWebinar - Seguridad en WordPress
Webinar - Seguridad en WordPress
 
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...
La potencia sin control no sirve de nada, claves para aprovechar el uso de Wo...
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...
WPEuskadi 2015 - La potencia sin control no sirve de nada, claves para aprove...
 
wp-cli
wp-cliwp-cli
wp-cli
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Buenasprcticas
BuenasprcticasBuenasprcticas
Buenasprcticas
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
Atix13
Atix13Atix13
Atix13
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012
 
Metadata api en apex
Metadata api en apexMetadata api en apex
Metadata api en apex
 
[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java
 
Curso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en DrupalCurso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en Drupal
 
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESS
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESSWHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESS
WHITEPAPER ESET ESPAÑA – AUMENTADO LA SEGURIDAD DE WORDPRESS
 

Practicas Recomendadas - WordPress Argentina Meetup Octubre 2014

  • 1. WordPress Prácticas Recomendadas Laura Melo, Freelance WordPress Developer
  • 2. ¿Qué es “Prácticas Recomendadas”? Técnicas o métodos recomendado que nos permiten llegar a mejores resultados o replicar casos de éxito. Se obtiene de la experiencia y estandarización de los procesos.
  • 3. Aprender - Consultar - Compartir ● Leer el Código ● Codex, Code Reference ● Handbook: WordPress Coding Standards ● Mantenerse actualizado de las novedades (ie: Blog) ● Participar en los foros de soporte de WP y Plugins como: http://es.forums.wordpress.org/ o http://wordpress.stackexchange.com/
  • 4. Aprender - Consultar - Compartir ● Participar en la Comunidad Local (como @wpargentina) ● Compartir el Código ● Reportar bugs ● Traducir
  • 5. Recomendaciones Generales ● Elegir cuidadosamente Plugins y Themes a utilizar ● Mantener WordPress y Plugins Actualizados. No dejar instalaciones viejas que no uses, si no lo usas eliminalo y si lo usas actualizalo. ● Hacer Backups regulares y antes de alguna tarea crítica.
  • 6. Recomendaciones Generales ● Usar Controlador de Versiones (GIT / SVN) ● No modificar los archivos del core de WordPress y de los Plugins (usar hooks y reportar bugs) ● Usar Child-Theme para modificar themes de terceros.
  • 7. Recomendaciones para el Código Usar las funciones y librerías que ofrece WordPress, por ejemplo: ● current_time(), no date_default_timezone_set() ● Usar el objeto $wpdb y sus métodos para interactuar con la base de datos. ● Usar hooks (ganchos): Acciones y Filtros Actions (Codex Action Reference) Filters (Codex Filter Reference)
  • 8. Recomendaciones para el Código Usar las funciones y librerías que ofrece WordPress, por ejemplo: ● wp_remote_get / wp_remote_post en vez de curl ● get_template_part() en vez require() o include() ● media_handle_upload() para subir archivos ● Cargar scripts y hojas de estilos con “Enqueue Functions / Enqueue Actions” http://codex.wordpress.org/Function_Reference/wp_enqueue_script
  • 9. Recomendaciones para el Código Evitar conflictos de nombres de función: prefijo de funciones, o encapsular las funciones dentro de clases. Fatal error: Cannot redeclare get_the_post_terms() (previously declared in.... Si el plugin se llama “Wordpress Manda Mail” podés usar “wmm_” como prefijo de todas tus funciones (y clases de css), por ejemplo wmm_manda_mail() class Wmm_Mailer { static function send( $post_ID ) { $friends = 'jhondoe@example.org'; mail($friends,"New post!", 'Check my new post in '.get_permalink($post_ID )); return $post_ID; } } add_action( 'publish_post', array( 'Wcc_Mailer', 'send' ));
  • 10. Recomendaciones de Seguridad ● Limitar el Acceso: No todos necesitan ser administradores, ni tener acceso ftp o ssh. Elegí los perfiles adecuados para la tarea que tenga que hacer el usuario, y eliminarlos cuando ya no los necesiten. ● Contraseñas seguras: Usar admin o 123456 no es una buena idea. Contraseñas largas, con numeros, simbolos, mayusculas, etc. ● No usar el nombre “admin” para el usuario administrador.
  • 11. Recomendaciones de Seguridad Vulnerabilidades XSS: sanear y validar entradas y escapar salidas. ● Nunca confiar en el usuario. ● Escapar todo lo que provenga de fuentes externas (bases de datos, usuarios, twitter, etc) y cuanto más tarde mejor (convención). ● Sanear está bien, pero validar/rechazar es mejor.
  • 12. Recomendaciones de Seguridad ● Prevenir el acceso directo a los archivos: if ( ! defined( 'ABSPATH' ) ) exit; ● Eliminar todos los “warnings” y “notices”: define( WP_DEBUG, true ); o Plugin Debug Bar
  • 13. Recomendaciones de Seguridad Nonce (número que se usa una sola vez) ● Si utiliza para fines de verificación, es una clave única o token, que solo puede ser utilizado para la acción definida, y solo en esa instalación. ● Crear: wp_create_nonce($action) ● Verificar: wp_verify_nonce( $nonce, $action );
  • 14. Recomendaciones de Performance ● Usar plugin de cache WP Super Cache, W3 Total Cache ● Gzip Compression (testear http://www.gidnetwork.com/tools/gzip-test.php) Editar el archivo .htaccess: # BEGIN GZIP <ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule>
  • 15. Recomendaciones de Performance ● Vaciar papelera: define ('EMPTY_TRASH_DAYS', 7); ● Limitar la cantidad de Revisiones a guardar: define( 'WP_POST_REVISIONS', 3 ); ● Optimizar Imágenes antes de subirlas.

Notas del editor

  1. Sinopsis: Prácticas Recomendadas: Algunos consejos a tener en cuenta cuando trabajamos con WordPress, para lograr un producto más confiable y para prevenir dolores de cabeza.
  2. Cuando me senté a pensar la charla, la primera pregunta que me se me presentó es que es buenas prácticas? y buscando un poco en mi formación y mis propios conceptos, y lo pensé de esta manera. Buscando un poco de respaldo, en la wikipedia por ejemplo, se toma como una expresión un poco manoseada por consultoras empresariales, como un término de moda, pero que no deja de ser el sentido común aplicado al conocimiento de los procesos. Por eso me parece más apropiada la denominación de “Prácticas Recomendadas” . Me tocó trabajar en la industria de la construcción y se le llamaba “las reglas del buen arte”.
  3. Exprimir al máximo el modelo de open source sobre el cual trabaja WordPress, esto implica comprometerse en un ida y vuelta de información y conocimientos enriquecedores. Es importante la actitud autodidacta también, teniendo en cuenta que la información disponible es enorme, el codex mismo es muy grande, a veces incompleto o deficiente también. Por eso si bien es importante tenerlo como referencia, siempre volvemos al punto uno: Leer el código, buscar en el código, por ejemplo una buena forma es usar el repositorio de github de wordpress. El blog de WordPress es una buena fuente para mantenerse actualizado de las novedades, pero hay muchísimos más. Compartir el código y reportar bugs nos permite tener una actitud más activa y enriquecedora todavía. Hay mucha documentación en Inglés, para lo que lo manejan, una buena forma de aprender y de sumar es generar la documentación en Castellano que falta. http://wpseek.com/ Leer el codigo: http://blog.codinghorror.com/learn-to-read-the-source-luke/
  4. Exprimir al máximo el modelo de open source sobre el cual trabaja WordPress, esto implica comprometerse en un ida y vuelta de información y conocimientos enriquecedores. Es importante la actitud autodidacta también, teniendo en cuenta que la información disponible es enorme, el codex mismo es muy grande. El blog de WordPress es una buena fuente para mantenerse actualizado de las novedades, pero hay muchísimos más. Compartir el código y reportar bugs nos permite tener una actitud más activa y enriquecedora todavía. Hay mucha documentación en Inglés, para lo que lo manejan, una buena forma de aprender y de sumar es generar la documentación en Castellano que falta. http://wordpress.stackexchange.com/ http://wpseek.com/ Leer el codigo: http://blog.codinghorror.com/learn-to-read-the-source-luke/
  5. http://kamalyon.com/actualizaciones-automaticas-wordpress/
  6. http://codex.wordpress.org/es:Temas_hijos
  7. http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters Hooks are provided by WordPress to allow your plugin to 'hook into' the rest of WordPress; that is, to call functions in your plugin at specific times, and thereby set your plugin in motion. There are two kinds of hooks. You can sometimes accomplish the same goal with either an action or a filter. For example, if you want your plugin to change the text of a post, you might add an action function to publish_post (so the post is modified as it is saved to the database), or a filter function to the_content (so the post is modified as it is displayed in the browser screen).
  8. http://code.tutsplus.com/articles/tips-for-best-practices-in-wordpress-development--cms-20649 Fatal error: Cannot redeclare get_the_post_terms() (previously declared in.... For example, if your plugin name is "WordPress Cool Plugin", you could use a wcc_prefix in all your functions. So in the example above our function name will be wcc_get_the_post_terms() I also recommend you to prefix your CSS, or at least try to make it more unique to avoid modifying other plugins styles class Wcc_Mailer { static function send( $post_ID ) { $friends = 'jhondoe@example.org'; mail( $friends,"New post!", 'Check my new post in ' . get_permalink( $post_ID ) ); return $post_ID; } } add_action( 'publish_post', array( 'Wcc_Mailer', 'send' ) );
  9. Registro siempre desactivado, si necesitamos tenerlo activado asegurarnos de que los nuevos usuarios entran con rol “Suscriptor” y nunca Colaborador, Editor o Administrador.
  10. http://codex.wordpress.org/Data_Validation http://vip.wordpress.com/documentation/best-practices/security/validating-sanitizing-escaping/ XSS, del inglés Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas web vistas por el usuario código JavaScript o en otro lenguaje script similar (ej: VBScript), evitando medidas de control como la Política del mismo origen. Este tipo de vulnerabilidad se conoce en español con el nombre de Secuencias de comandos en sitios cruzados.
  11. https://github.com/Automattic/developer
  12. Los más conocidos son WP Super Cache y W3 Total Cache. ( ver tema hosting tipo wp-engine y mediatemple) http://www.elegantthemes.com/blog/tips-tricks/optimize-your-wordpress-website http://ayudawp.com/gzip-sin-plugins/
  13. http://www.elegantthemes.com/blog/tips-tricks/optimize-your-wordpress-website