introducción al desarrollo en wordpressindex-of.co.uk/various/seminario wordpress panda edition...
TRANSCRIPT
Introducción al desarrollo en WordPressGotardo González
martes 27 de septiembre de 11
WordPressIntroducción al desarrollo
PARTE ILa estructura de WordPress Instalación y configuración de WordPress.Seguridad en WordpressPlugins esencialesApariencia: themes y custom menus.
PARTE IIEditando un theme de WordPressAlgunos consejos de optimización
TaxonomíasCustom post types
martes 27 de septiembre de 11
Qué es Wordpress WordPress is web software you can use to
create a beautiful website or blog. We like to say that WordPress is both free and priceless
at the same time.
WordPress es una aplicación web de creación de sitios webs o blogs atractivos. Nos gusta la idea de
que Wordpress sea a la vez libre y gratis.
martes 27 de septiembre de 11
¿Por qué ?
Facilidad de uso Flexibilidad en el desarrollo
Facilidad de uso para el cliente final
martes 27 de septiembre de 11
martes 27 de septiembre de 11
INSTALACIÓN Y CONFIGURACIÓN
de WordPress
SO easyA caveman
can do itmartes 27 de septiembre de 11
Instalando WordPress • Descarga desde
http://es.wordpress.org/WordPress
• La instalación de Bitnamihttp://bitnami.org/es/stack/wordpress
martes 27 de septiembre de 11
Configuración básica • General: Título, membresía y hora del servidor.
• Writing: Activar XML-RPC.
• Conversación: Settings y listas.
• Multimedia: Image Size.
• Enlaces permanentes: friendly url.
martes 27 de septiembre de 11
LA ESTRUCTURA DE WORDPRESS
martes 27 de septiembre de 11
La base de datos
martes 27 de septiembre de 11
El árbol de directorios
martes 27 de septiembre de 11
Seguridad en
WordPress
martes 27 de septiembre de 11
Seguridad (I)• No utilizar wp_ como prefijo de las tablas.
• Proteger wp-config.php contra escriturachmod 644 wp-config.php
• Nombre del super usuario distinto de ‘admin’.
• Eliminar todos los ficheros de instalación, configuración y exportación./wp-admin/import.php/wp-admin/install.php/wp-admin/installer-helper.php/wp-admin/upgrade.php
martes 27 de septiembre de 11
Seguridad (II)• Desactiva y desinstala todos los plugins que no
estés utilizando
• No utilizar plugins para realizar copias de respaldo de la BD (ojo con wp-db-backup).
• Utiliza una cuenta de autor: no trabajes con todos los permisos (quizás quieras probar el plugin Role Manager)
• Cuida los permisos del usuario con el que accedes a la BD
• Priva de permisos al user_ID = 1.
martes 27 de septiembre de 11
Seguridad (III)• Protege los directorios con .htaccess
Order Allow,DenyDeny from all<Files ~ ".(css|jpe?g|png|gif|js)$">Allow from all</Files>
• Si administras tu blog desde LAN o VPN, no permitas el acceso desde otra máquina.<Location /wordpress/wp-admin/>Order deny,allowAllow from 192.168.1.27Deny from All
</Location>
martes 27 de septiembre de 11
Seguridad (IV) - Plugins• Escanea tu sitio con WP Exploit Scanner.
• Escanea tu sitio con WP Security Scan.
• Utiliza Replace WP Version.
• Si utilizas una versión anterior a WordPress 3.0 ejecuta Admin Renamer Extended.
NOTA: Echa un vistazo a http://blogsecurity.net/projects/secure-wp-whitepaper.pdf
martes 27 de septiembre de 11
Seguridad (IV) - Plugins• Escanea tu sitio con WP Exploit Scanner.
• Escanea tu sitio con WP Security Scan.
• Utiliza Replace WP Version.
• Si utilizas una versión anterior a WordPress 3.0 ejecuta Admin Renamer Extended.
NOTA: Echa un vistazo a http://blogsecurity.net/projects/secure-wp-whitepaper.pdf
martes 27 de septiembre de 11
PLUGINS ESENCIALES(o no)
martes 27 de septiembre de 11
Plugins - SEO y WA• All in One SEO Pack
• Google XML Sitemaps
• Google Analytics for Wordpress
• KB Robots.txt
• SEO Friendly Images
martes 27 de septiembre de 11
Plugins - Social Media• AddThis
• Twitter Tools
Plugins - Conversación• Comment Whitelist
martes 27 de septiembre de 11
Plugins - Mejoras• Thickbox
• Clean-Contact
• Nextgen Gallery
• WP Multiple Languages (de pago)
• WPtouch
• MCEComments
martes 27 de septiembre de 11
Plugins - Desarrollo• Exec-PHP
• Optimize DB
• WP-Syntax
martes 27 de septiembre de 11
APARIENCIA: Themes y Menús personalizados
martes 27 de septiembre de 11
Apariencia - Temas• Repositorios de themes
• Añadir theme en WordPress.
• press75.com
• themeforest.com
• Estructura de un tema
martes 27 de septiembre de 11
Apariencia• Themes
• Widgets
• Menús
• La web móvil: WP-Touch, MobilePress
martes 27 de septiembre de 11
Apariencia - un menú• Crear un menú personalizado.
• Cómo añadir un menú personalizado a un theme.
Registrar un nuevo menú en functions.php<?php register_nav_menu( 'footer', __( 'Footer Menu', 'twentyeleven' ) ); ?>
Llamar al menú <?php wp_nav_menu( array( 'theme_location' => 'footer' ) ); ?>
martes 27 de septiembre de 11
ALGUNOS CONSEJOS DE OPTIMIZACIÓN
martes 27 de septiembre de 11
Optimizando Wordpress• Crea un .htaccess para controlar la cache
# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress
# Control de Cache<FilesMatch "\.(ico|pdf|flv)$">Header set Cache-Control "max-age=29030400, public"</FilesMatch><FilesMatch "\.(jpg|jpeg|png|gif|swf)$">Header set Cache-Control "max-age=604800, public"</FilesMatch><FilesMatch "\.(xml|txt|css|js)$">Header set Cache-Control "max-age=604800, proxy-revalidate"</FilesMatch><FilesMatch "\.(html|htm|php)$">Header set Cache-Control "max-age=180, private, proxy-revalidate"</Files>
martes 27 de septiembre de 11
Optimizando Wordpress• GZIP Deflate con .htaccess
<IfModule mod_setenvif.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript </IfModule>
• Guardar contenidos en cache con un plugin como WP Super Cache
• Utiliza un plugin para guardar la cache de las imagenes de Gravatar.
martes 27 de septiembre de 11
Optimizando Wordpress• WP-Optimize
martes 27 de septiembre de 11
Optimizando Wordpress• ¿Evitar llamadas en nuestros themes?
<?php bloginfo('url') ?> <!---- Escribe la dirección en lugar de utilizar la función blog info.
• Evitar la carga de funciones obsoletas en wp-settings.php
• ¿Borrar revisiones?DELETE FROM wp_posts WHERE post_type = "revision";
• ¿Desactivar revisiones?define('WP_POST_REVISIONS', false);
• Controlar uso de memoria:<?php echo memory_get_usage() . " bytes"; ?>
martes 27 de septiembre de 11
Optimizando Wordpress• Evitar la carga de funciones obsoletas en wp-
settings.php (no incluir deprecated.php)
• Borrar revisionesDELETE FROM wp_posts WHERE post_type = "revision";
• ¿Desactivar revisiones y autosave?define('WP_POST_REVISIONS', false);
• Controlar uso de memoria:<?php echo memory_get_usage() . " bytes"; ?>
martes 27 de septiembre de 11
Optimizando Wordpress• Optimiza y comprime tu código HTML, CSS y
JavaScript.
• Si tienes acceso a su configuración, optimza Apache, PHP, y MySQL.
• http://developer.yahoo.com/performance/rules.html
martes 27 de septiembre de 11
TAXONOMÍAS
martes 27 de septiembre de 11
¿Taxonomías?
martes 27 de septiembre de 11
Taxonomías por defecto• Categorías (category)
• Etiquetas (post_tag)
• Categorías de enlaces (link_category)
martes 27 de septiembre de 11
Registrar una taxonomíafunction lenguajes_init() {
! register_taxonomy(! ! 'lenguajes',! ! 'post',! ! array(! ! ! 'label' => __( 'Lenguajes de programación' ),! ! ! 'sort' => true,! ! ! 'args' => array( 'orderby' => 'term_order' ),! ! ! 'rewrite' => array( 'slug' => 'lenguajes' )! ! )! );}
add_action( 'init', 'lenguajes_init' );
martes 27 de septiembre de 11
Consultas por taxonomía
//Consultar los posts sobre PHP$query = new WP_Query( array( 'lenguaje' => 'php' ) );
//Algo un poco más complejo$args = array(! 'tax_query' => array(! ! array(! ! ! 'taxonomy' => 'languaje',! ! ! 'field' => 'slug',! ! ! 'terms' => 'php'! ! )! ));$query = new WP_Query( $args );
martes 27 de septiembre de 11
CUSTOM POST TYPES
martes 27 de septiembre de 11
Custom post typespor defecto
• Un ‘post’ es algo que se almacena en la tabla wp_posts
• Tipos por defecto:
• Post
• Page
• Attachment
• Revisions
• Nav menusmartes 27 de septiembre de 11
Custom post typespor defecto
add_action( 'init', 'create_post_type' );
function create_post_type() {! register_post_type( 'acme_product',! ! array(! ! ! 'labels' => array(! ! ! ! 'name' => __( 'Products' ),! ! ! ! 'singular_name' => __( 'Product' )! ! ! ),! ! ! 'public' => true,! ! ! 'has_archive' => true,! ! ! 'rewrite' => array('slug' => 'products')! ! )! );}
martes 27 de septiembre de 11
Algunas referencias• WPDB
http://codex.wordpress.org/Class_Reference/wpdb
• Optimización de WordPress: infografíahttp://conecti.ca/2011/07/09/infografia-optimizar-wordpress/
martes 27 de septiembre de 11
?><!---
Este taller se realizó el 24 de septiembre de 2011 en la UEx dentro de los seminarios de The Evnt.
martes 27 de septiembre de 11