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.
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.
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”.
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/
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/
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).
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' ) );
Registro siempre desactivado, si necesitamos tenerlo activado asegurarnos de que los nuevos usuarios entran con rol “Suscriptor” y nunca Colaborador, Editor o Administrador.
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.
https://github.com/Automattic/developer
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/