WordPress y el Fatal Memory Error

Uno de los principales problemas de Wordpress es el consumo de memoria, este consumo no siempre puede reducirse y poco a poco (versión a versión) parece que la funcionalidad básica va consumiendo más memoria de nuestro sistema. Para intentar reservar más memoria disponible en nuestro sistema la gente de WeblogToolsCollection.com publica un artículo recopilatorio de soluciones al famoso “Fatal error: Allowed memory size of 33554432 bytes exhausted.”

Artículos relacionados

aNieto2k

Desarrollo de WordPress 3.1 comienza en Septiembre

Si usas las versiones en desarrollo de WordPress, habrás notado la poca cantidad de novedades de hay hasta ahora en WordPress 3.1-alpha e, incluso, que hasta ahora no hay algo que nos diga "esto irá en la 3.1, y esto no". Es más: hasta ahora, solo hemos sabido que la versión 3.2 requerira MySQL 5 y PHP 5.3, pero nada de la versión 3.1.

Y es que el desarrollo activo de la versión 3.1 comenzará recién en Septiembre: antes, solo veremos parches y uno que otro retoque en la actual versión en desarrollo. ¿Por que? Mentiría si diera una razón, pero considerando que el desarrollo de la próxima versión siempre comienza cuando se liberá una nueva versión (no se si me entienden), es sumamente extraño.

Tal vez adelgazarán el código, o comenzarán a preparar el camino para la versión 3.2, o solo se están tomando unas vacaciones luego del esfuerzo invertido en la versión 3.0. Lo que es seguro, es que tanto la versión 3.1 como la 3.2, serán pasos bastante importantes (o interesantes) para WordPress.

ACTUALIZACIÓN
Me avisa katarsis20032002, que se están dedicando a trabajar en la comunidad WordPress hasta Septiembre y por ello el desarrollo de la versión 3.1 esta "tan flojo". Muy interesante detener un tiempo el desarrollo de WordPress para centrarse en la comunidad. Aunque también es decepcionante saber que no se están dedicando esfuerzos para reducir el código en la versión en desarrollo. Bueno, como se dice aquí "algo es algo".

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar WordPress

El cuerpo humano en HTML y PHP

Ahí es nada la currada que se han pegado en Alvaro Go! para hacer este, que sería el código del cuerpo humano (hasta con esponsor) en HTML y PHP …

Vía Microsiervos

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar WordPress

Comentarios con tu perfil de Twitter o Facebook

Desde hace unos minutos puedes comprobar que ahora no hace falta que rellenes tus datos a la hora de comentar en el blog. Puedes hacerlo, por supuesto, pero si prefieres la comodidad de usar tu perfil en Twitter o Facebook para comentar, y que el blog te recuerde, dispones de dos botones desde los que realizar la conexión y que así te sea más sencillo y rápido publicar comentarios en Ayuda WordPress.

Hace tiempo que he buscado como integrar esta funcionalidad, y quizás estos días atrás sufrieras mis pruebas con IntenseDebate o Disqus, pero tras varios experimentos fallidos, debidos principalmente a los fallos de importación de los comentarios existentes con estos sistemas (aún verdes a mi modo de ver) he optado por usar un par de plugins que funcionan a la perfección: Simple Twitter Connect y Simple Facebook Connect.

La configuración no es inmediata, pues tienes que crear una aplicación en Facebook y en Twitter para obtener las claves API, y luego hay que modificar el formulario de comentarios para añadir un par de líneas de código (solo una vez porque ambos plugins usan el mismo código), pero el resultado es realmente satisfactorio y funciona estupendamente, al menos en las pruebas que he venido haciendo en mi blog personal Navegando con red.

De todos modos ahí lo tienes, prueba y si ves algo que no va bien avisa.

A petición del respetable, que andáis un poco vagos, traduzco las instrucciones para añadir el código de marras al fichero de comentarios ;)

  1. Localiza las tres entradas de código para el autor, email y url en el fichero de comentarios de tu tema (normalmente comments.php)

    Normalmente suele empezar por algo parecido a esto:

    PHP:
    1. <input type="text" id="author-p<?php echo $post->ID; ?>" name="author" value="<?php echo $comment_author; ?>" size="22" />

  2. Pues bien, justo antes de la primera llamada a estos IDs (la primera suele ser similar a la que he puesto justo arriba) tienes que añadir lo siguiente:
    PHP:
    1. <div id="comment-user-details">
    2. <?php do_action('alt_comment_login'); ?>

  3. Ahora solo queda hacer el cierre del 'div', justo al final de este bloque de IDs de autor, etc. Solo tendrías que añadir esto al final:
    PHP:
    1. </div>

Como he comentado antes, con este código verás el botón para Twitter y para Facebook, pues el código que necesitan es el mismo, no hay que añadirlo cada vez que instales uno de los plugins.

WordPress 3.2 requerirá MySQL 5 (¿se nos ha ido la olla?)

Está más que probado que MySQL 5 es más lento que MySQL 4. Además, WordPress no requiere ninguna funcionalidad específica de MySQL 5 para funcionar.

Entonces ¿por qué se acaba de anunciar que WordPress 3.2 requerirá MySQL 5.0.15?

Repetimos:

  1. MySQL 5 ofrece mejoras de rendimiento en InnoDB que, como he dicho, WordPress no utiliza.
  2. MySQL 4 es más rápido en MyISAM, el formato de base de datos más común que, dicho sea de paso, es el que usa WordPress.

¿Alguien lo entiende?

Pero nada, además insisten en que los servidores también deban ejecutar PHP 5.2 como mínimo para WordPress 3.2.

En este caso, aunque PHP 5.2 es más rápido que PHP 4.4 (y PHP 5.3 es aún más rápido que la versión 5.2) no habría ningún problema en que WordPress 3.2 soportara PHP 4.4. Pero cuando Matt se emperra no hay quien lo pare, y estoy seguro de es capaz de forzar a que se actualice a PHP 5 quitando código que funcione en PHP 4.4.

¿Tan difícil es hacer que el software sea flexible, escalable?. Entiendo que se quieran eliminar problemas de seguridad forzando actualizaciones en los servidores pero no hay que ser tan radical. Tampoco soy un talibán de la compatiblidad a toda costa, causa de la mayoría de los males de software como Joomla o el mismo Windows y, al tiempo, parte del gran éxito de WordPress, pero creo que se están llevando las cosas, no demasiado lejos pero si demasiado rápido.

Lo que temo es que se pretenda forzar un ritmo de actualizaciones tan tremendo, no ya de WordPress, sino de los mismos sistemas para soportarlo, provocando unos requisitos demasiado elevados. ¡Coño, si hasta han publicado un plugin para que comprobemos si nuestro servidor va a soportar WordPress 3.2.!. Ya hasta me molesta el nombrecito: prueba de salud le han llamado. ¡Por favor!

Además, como puede que los proveedores de alojamiento no sigan este frenético ritmo, en vez de conseguir instalaciones más seguras, lo que se podría provocar es que muchos usuarios no pudieran actualizar WordPress a una versión más estable y fiable (como sería cualquier actualización mayor) porque su servidor no la soportara. Y, por favor, no vamos a estar cambiando de proveedor de hosting cada dos por tres ni pagando de más para poder actualizar WordPress.

A ver si a este paso vamos a terminar como con cada versión de Windows, que te requiere que cambies de ordenador.

Lo dejo a vuestro criterio y reflexión, esta es solo un punto de vista acerca de esta noticia.

Acorta los títulos

Si usas un tema abigarrado, de esos que están tan de moda últimamente, los de estilo revista (o magazine) seguramente te hayas dado de bruces más de una vez con el problema de la limitación de los títulos, pues tienes que controlarte o se descuadrará tu tema, no se verán bien los títulos y cualquier otro desastre estético.

Afortunadamente todo tiene solución en WordPress, y más con un poquito de código. Vamos a ver como hacerlo en solo 2 pasos … 

1. Añadiendo la función

Para empezar abrimos el fichero functions.php de tu tema y añadimos uno de los siguientes códigos:

Acortar títulos por palabras

PHP:
  1. //Acortando títulos por palabras
  2. function titulo_corto($after = '', $length) {
  3.     $mytitle = explode(' ', get_the_title(), $length);
  4.     if (count($mytitle)>=$length) {
  5.         array_pop($mytitle);
  6.         $mytitle = implode(" ",$mytitle). $after;
  7.     } else {
  8.         $mytitle = implode(" ",$mytitle);
  9.     }
  10.     return $mytitle;
  11. }

Acortar títulos por caracteres

PHP:
  1. //Acortando títulos por caracteres
  2. function titulo_corto($after = null, $length) {
  3.     $mytitle = get_the_title();
  4.     $size = strlen($mytitle);
  5.     if($size>$length) {
  6.         $mytitle = substr($mytitle, 0, $length);
  7.         $mytitle = explode(' ',$mytitle);
  8.         array_pop($mytitle);
  9.         $mytitle = implode(" ",$mytitle).$after;
  10.     }
  11.     return $mytitle;
  12. }

Guardas los cambios en el fichero.

2. Modificando el loop

Una vez elegido el tipo de acortamiento, con uno de los códigos anteriores, solo nos queda sustituir el código de impresión de los títulos en - normalmente - index.php. Buscamos algo similar a este código …

PHP:
  1. <h2 class="title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">?php echo titulo_corto('...', 12); ?></a></h2>

y lo sustituimos por este otro:

PHP:
  1. <h2 class="title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">?php echo titulo_corto('...', 12); ?></a></h2>

Dependiendo del código elegido te mostrará, en este ejemplo, 12 palabras o 12 caracteres, completando el resto con los socorridos puntos suspensivos '…'. Además, al colocar el cursor sobre el mismo nos mostrará el nombre completo (the_title()), para que no nos perdamos.

Tutorial: crear una barra con los datos del autor

Si nuestro blog es unipersonal, es probable que no nos interese el siguiente tutorial. Pero si tenemos un en blog multipersonal, ya sea con una cantidad determinada de colaboradores  o abierto todo aquel que quiera colaborar (como éste), puede ser una buena idea mostrar de forma dinámica los datos del autor de la entrada actualizados al día.

Seguramente existe más de un plugin para realizar esto o algo por el estilo, pero como soy un fanático del hágalo usted mismo les voy a mostrar cómo hacerlo por código utilizando las mismas funciones de Wordpress.

Cabe aclarar que más allá del código php y html, seguramente cada uno necesitará adaptar un poco los estilos css a su theme. De todas formas sobre utilizar el theme por defecto de wordpress 2.9.2. La idea por supuesto es que tengan alguna idea de html, php y css, pero sino copiar y pegar el código final también vale. Comencemos entonces con el código:

Creemos primero el div que va a contener todo:

HTML:
  1. <!--div contenedor -->
  2. <div id="author-data">
  3. </div>

Vamos a comenzar mostrando el gravatar del autor. Para eso vamos a utilizar la función "get_avatar()" que recibe el id del usuario y el ancho en pixeles del avatar, y retorna el código html listo para insertar. A su vez para obtener el id del autor usaremos la función "get_the_author_meta()" que nos servirá para obtener casi cualquier información acerca del mismo, recibe como parámetro el dato a recuperar. Una vez obtenido el código lo imprimimos:

PHP:
  1. echo get_avatar(get_the_author_meta('ID'),80);

Ahora lo segundo seria agregar un título con un enlace al sitio web del autor, para eso utilizaremos la función "the_author_link()" que imprime el nombre publico del autor como link a su sitio.

HTML:
  1. <h4>Acerca de <?php the_author_link(); ?>:</h4>

Si pensamos en el SEO y preferimos que el enlace sea nofollow (o sea que los bots como el de Google no lo considere). Podriamos hacer lo siguiente:

PHP:
  1. <h4>Acerca de <a rel="nofollow" title="web del autor" href="<?php the_author_meta('user_url'); ?>;" <?php the_author(); ?></a>/h4>

Como verán usamos la función "the_author()" que imprime el nombre publico del author y la función "the_author_meta()" para obtener el link de su web.

Ahora utilicemos nuevamente la función "the_author_meta()" pero para obtener su descripción:

PHP:
  1. <p><?php the_author_meta('user_description'); ?>
  2. </p>

Si por cuestiones de diseño quisiéramos recortarla a no mas de una x cantidad de caracteres podemos usar la función "substr()" de php. Recibe la cadena a recortar, el punto de inicio y la cantidad de caracteres. Para recuperar la descripción usamos "get_the_author_meta()", como ya habrán deducido, cuando lo usamos con get_ adelante recuperamos el valor y cuando lo usamos sin el, directamente lo imprimimos. Por ejemplo si quisiéramos recortar la descripción a 140 caracteres:

PHP:
  1. <p>
  2. <?php
  3. //Con esto imprimimos los primeros 140 caracteres (a lo twitter) de la descripción
  4. echo substr( get_the_author_meta('user_description') , 0 , 140 );
  5. ?>
  6. </p>

Ahora la idea va a ser mostrar la cantidad de post del autor (una pavada que hacemos con la función "the_author_posts()") pero que a su vez funcione como un link a la pagina con los post del author. Esta página en un blog con permalinks "bonitos" tendría la siguiente forma tu-dominio.com/author/el-autor/. Pero como dependiendo de la configuración, esto puede cambiar, vamos a obtener primero el link a la página con los posts del autor.

Para nuestra tarea vamos a hacer uso de la función "get_author_posts_url()" que recibe el id del autor y devuelve el link que mostramos. Para obtener el id, volvemos a usar la función "get_the_author_meta()":

PHP:
  1. get_author_posts_url(get_the_author_meta('ID'));

Ya el link armado para mostrar todo lo que queríamos queda así:

PHP:
  1. <p>
  2. Ha publicado <a title="otros posts del autor" href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>" <<?php the_author_posts() ?> posts </a>
  3. </p>

Para finalizar los datos a mostrar nos queda un detalle mas, los comentarios realizados por el autor. Dado que no existe (o más bien, yo no conozco) una función para obtener directamente la cantidad de comentarios de un autor, vamos a crear una, basándonos en el sql que Fernando me facilito tan amablemente hace un tiempo,que a su vez esta basado en el del plugin wordpress-plugin-nofollow-free:

PHP:
  1. //La idea es que esta función reciba el id del autor y devuelva la cantidad de comentarios que realizó.
  2. function get_the_author_comments($author_id){
  3.  
  4. /*Obtenemos algunos datos del autor que vamos a necesitar*/
  5. $nick = get_the_author_meta( 'nickname' , $author_id);
  6. $username = get_the_author_meta( 'user_login' , $author_id);
  7. $displayname = get_the_author_meta( 'display_name' , $author_id);
  8. $email = get_the_author_meta( 'user_email' , $author_id);
  9.  
  10. /*Usamos el objeto global $wpdb (algo así como una interfaz de wp para acceder a la base de datos)*/
  11. global $wpdb;
  12.  
  13. /*
  14. Armamos un sql para que cuente la cantidad de registros (o sea comentarios) cuando
  15. el id de usuario sea igual que el del autor, o cuando su email coincida con el campo comment_author_email o cuando su nombre de usuario o su nombre publico o su nickname coincidan con el campo comment_author.
  16. */
  17. $sql = "SELECT COUNT(*) AS contador FROM " . $wpdb-&gt;comments . " WHERE " .
  18. " user_id = $author_id " .
  19. " or comment_author_email = '$email' " .
  20. " or comment_author IN ('" . $displayname . "','" . $username . "','" . $nick . "')";
  21.  
  22. //retornamos el resultado
  23. return  $wpdb-&gt;get_var($sql);
  24.  
  25. }

Debido al hecho de que si los comentarios del blog son abiertos al que quiera comentar, nos vamos a encontrar con un mismo usuario que comenta con 2 email y nombres distintos o 2 usuarios que comentan con el mismo nombre; el resultado de la función no siempre va a ser exacto. Pero dentro de todo funciona bastante bien.

Ahora vamos a insertarla en el archivo functions.php de nuestro theme para poder utilizarla. En nuestro código vamos a utilizarla así (insertándola en el mismo párrafo que la de los posts del autor):

PHP:
  1. <p>
  2. Ha publicado <a title="otros posts del autor" href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"&gt; &lt;?php the_author_posts() ?&gt; posts &lt;/a&gt; | Ha realizado <?php echo get_the_author_comments(get_the_author_meta('ID')); ?> comentarios
  3. </p>

Todo nuestro código insertado dentro del div contenedor y puesto en forma de función por una cuestión de practicidad queda así:

PHP:
  1. <!--div contenedor -->
  2. <div><?php
  3. //le pongo show_author_data por ponerle un nombre
  4. function show_author_data(){ ?>
  5. <!--div contenedor -->
  6. <div>
  7. <?php echo get_avatar(get_the_author_meta('ID'),80); ?>
  8. <h4>Acerca de <a rel="nofollow" title="web del autor" href="<?php the_author_meta('user_url'); ?>"><?php the_author(); ?></a></h4>
  9. <p>
  10. <?php
  11. //Con esto imprimimos los primeros 140 caracteres (a lo twitter) de la descripción
  12. echo substr( get_the_author_meta('user_description') , 0 , 140 );
  13. ?>
  14. </p>
  15. <p>
  16. Ha publicado <a title="otros posts del autor" href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"> <?php the_author_posts() ?> posts </a> | Ha realizado <?php echo get_the_author_comments(get_the_author_meta('ID')); ?> comentarios
  17. </p>
  18. </div>
  19. <?php } ?>
  20. </div>

Si al colocar ambas funciones en su archivo functions.php empiezan a saltarles errores diciendo que las cabeceras no se han podido enviar, lo mas probable es que hayan dejado saltos de línea o espacios por fuera de las etiquetas de php.

Por último vamos a agregar a la hoja de estilos de nuestro theme algunos retoques para embellecer nuestra barrita (por lo menos para que en Kubrick se vea bien):

CSS:
  1. #author-data {
  2. color: #000000; /* o sea negro */
  3. font-size: 14px;
  4. background: #cccccc;
  5. width: 100%;
  6. margin: 10px 0px;
  7. padding: 3px;
  8. float: left;
  9.  
  10. /*si ponen lo siguiente su css no va a validar */
  11. border-radius: 5px; /*para opera*/
  12. moz-border-radius: 5px; /*para firefox */
  13. webkit-border-radius: 5px; /*para safari y chrome*/
  14. khtml-border-radius: 5px; /* para konkeror */
  15. box-shadow: 2px 2px 5px #000000; /*para opera*/
  16. -moz-box-shadow: 2px 2px 5px #000000;/*para firefox*/
  17. -webkit-box-shadow: 2px 2px 5px #000000;/*para safari y chrome*/
  18. -khtml-box-shadow: 2px 2px 5px #000000;/*para konkeror*/
  19. }
  20.  
  21. #author-data .avatar {
  22. margin: 4px;
  23. float: left;
  24. }
  25.  
  26. #author-data h4 {
  27. font-size: 17px;
  28. margin: 3px;
  29. }
  30.  
  31. #author-data p {
  32. margin: 0px;
  33. padding: 4px;
  34. }

En lo personal inserte la barrita arriba del título (llamando a la función show_author_data), pero cada uno colóquela donde quiera (siempre y cuando sea adentro del bucle).

Mi barrita en Kubrick se ve así (no se ve el gravatar porque al momento de tomar la captura me encuentro offline):

Para que funcione en Twenty Ten (el tema por defecto en wp 3.0) hay que armar una estructura un poco más compleja en cuanto a divs y css:

PHP:
  1. function show_author_data(){ ?>
  2. <!--div contenedor -->
  3. <div>
  4. <div><?php echo get_avatar(get_the_author_meta('ID'),80); ?></div>
  5. <div>
  6. <h4>Acerca de <a rel="nofollow" title="web del autor" href="<?php the_author_meta('user_url'); ?>"><?php the_author(); ?></a></h4>
  7. <p>
  8. <?php
  9. //Con esto imprimimos los primeros 140 caracteres (a lo twitter) de la descripción
  10. echo substr( get_the_author_meta('user_description') , 0 , 140 );
  11. ?>
  12. </p>
  13. <p>
  14. Ha publicado <a title="otros posts del autor" href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"> <?php the_author_posts() ?> posts </a> | Ha realizado <?php echo get_the_author_comments(get_the_author_meta('ID')); ?> comentarios
  15. </p>
  16. </div>
  17. </div>
  18. <?php } ?>

Y los css:

CODE:
  1. #author-data {
  2. color: #000000; /* o sea negro */
  3. font-size: 14px;
  4. background: #cccccc;
  5. margin: 10px 0;
  6. padding: 3px;
  7. float: left;
  8. clear: both;
  9. width: 100%;
  10.  
  11. /*si ponen lo siguiente su css no va a validar */
  12. border-radius: 5px; /*para opera*/
  13. moz-border-radius: 5px; /*para firefox */
  14. webkit-border-radius: 5px; /*para safari y chrome*/
  15. khtml-border-radius: 5px; /* para konkeror */
  16. box-shadow: 2px 2px 5px #000000; /*para opera*/
  17. -moz-box-shadow: 2px 2px 5px #000000;/*para firefox*/
  18. -webkit-box-shadow: 2px 2px 5px #000000;/*para safari y chrome*/
  19. -khtml-box-shadow: 2px 2px 5px #000000;/*para konkeror*/
  20. }
  21.  
  22. #author-data #author-gravatar {
  23. margin: 4px;
  24. float: left;
  25. margin: 4px -104px 4px 4px;
  26. }
  27.  
  28. #author-data #author-info {
  29. float: left;
  30. margin: 0 0 0 104px;
  31. }
  32.  
  33. #author-info h4 {
  34. font-size: 17px;
  35. margin: 2px;
  36. padding: 0;
  37. }
  38.  
  39. #author-info p {
  40. margin: 2px;
  41. padding: 4px;
  42. }

El resultado es el siguiente:

Palabras Finales

Espero que algún valiente haya llegado hasta acá. La idea del tutorial no era tanto hacer la barrita en si, sino colaborar a que de a poco muchos empiecen a perderle el miedo al código y no sean tan plugin dependientes.

Además tenía tiempo queriendo colaborar con algún post para esta bodega de conocimiento que es AyudaWordpress. Espero les sea útil.

PD: para el que no entendió un pomo pero igual quiere la barrita acá la tiene en forma de plugin(eso si, en versión súper minimalista, no esperen panel de control, opciones, ni nada por el estilo).

Como añadir imágenes de cabecera a TwentyTen

El nuevo tema por defecto de WordPress desde la versión 3.0 se llama TwentyTen o 2010, y una de sus características es que te permite cambiar la imagen de cabecera eligiendo entre una lista de imágenes predeterminadas o bien subiendo una imagen adicional, pero si quieres, por ejemplo, ofrecer para una instalación nueva una lista de imágenes distintas entre las que puedan elegir los usuarios, o quieres que la lista de imágenes de cabecera muestre unas de tu propia factura para cambiarlas de vez en cuando o en ocasiones (navidad, festividades, etc) también puedes hacerlo.

En realidad el proceso es muy sencillo, vamos a verlo … 

Primero abre el fichero functions.php del tema TwentyTen y localiza donde empieza esta sección:

PHP:
  1. // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.

A partir de ahí verás las "llamadas" a las imágenes por defecto, con su descripción:

PHP:
  1. register_default_headers( array(
  2. ‘berries’ => array(
  3. ‘url’ => ‘%s/images/headers/berries.jpg’,
  4. ‘thumbnail_url’ => ‘%s/images/headers/berries-thumbnail.jpg’,
  5. /* translators: header image description */
  6. ‘description’ => __( ‘Berries’, ‘twentyten’ )
  7. ),
  8. ‘cherryblossom’ => array(
  9. ‘url’ => ‘%s/images/headers/cherryblossoms.jpg’,
  10. ‘thumbnail_url’ => ‘%s/images/headers/cherryblossoms-thumbnail.jpg’,
  11. /* translators: header image description */
  12. ‘description’ => __( ‘Cherry Blossoms’, ‘twentyten’ )
  13. ),
  14. ‘concave’ => array(
  15. ‘url’ => ‘%s/images/headers/concave.jpg’,
  16. ‘thumbnail_url’ => ‘%s/images/headers/concave-thumbnail.jpg’,
  17. /* translators: header image description */
  18. ‘description’ => __( ‘Concave’, ‘twentyten’ )
  19. ),
  20. ‘fern’ => array(
  21. ‘url’ => ‘%s/images/headers/fern.jpg’,
  22. ‘thumbnail_url’ => ‘%s/images/headers/fern-thumbnail.jpg’,
  23. /* translators: header image description */
  24. ‘description’ => __( ‘Fern’, ‘twentyten’ )
  25. ),
  26. ‘forestfloor’ => array(
  27. ‘url’ => ‘%s/images/headers/forestfloor.jpg’,
  28. ‘thumbnail_url’ => ‘%s/images/headers/forestfloor-thumbnail.jpg’,
  29. /* translators: header image description */
  30. ‘description’ => __( ‘Forest Floor’, ‘twentyten’ )
  31. ),
  32. ‘inkwell’ => array(
  33. ‘url’ => ‘%s/images/headers/inkwell.jpg’,
  34. ‘thumbnail_url’ => ‘%s/images/headers/inkwell-thumbnail.jpg’,
  35. /* translators: header image description */
  36. ‘description’ => __( ‘Inkwell’, ‘twentyten’ )
  37. ),
  38. ‘path’ => array(
  39. ‘url’ => ‘%s/images/headers/path.jpg’,
  40. ‘thumbnail_url’ => ‘%s/images/headers/path-thumbnail.jpg’,
  41. /* translators: header image description */
  42. ‘description’ => __( ‘Path’, ‘twentyten’ )
  43. ),
  44. ‘sunset’ => array(
  45. ‘url’ => ‘%s/images/headers/sunset.jpg’,
  46. ‘thumbnail_url’ => ‘%s/images/headers/sunset-thumbnail.jpg’,
  47. /* translators: header image description */
  48. ‘description’ => __( ‘Sunset’, ‘twentyten’ )
  49. ),
  50. ‘waterfall’ => array(
  51. ‘url’ => ‘%s/images/headers/waterfall.jpg’,
  52. ‘thumbnail_url’ => ‘%s/images/headers/waterfall-thumbnail.jpg’,
  53. /* translators: header image description */
  54. ‘description’ => __( ‘Waterfall’, ‘twentyten’ )
  55. ),
  56. ‘mountain’ => array(
  57. ‘url’ => ‘%s/images/headers/mountain.jpg’,
  58. ‘thumbnail_url’ => ‘%s/images/headers/mountain-thumbnail.jpg’,
  59. /* translators: header image description */
  60. ‘description’ => __( ‘Mountain’, ‘twentyten’ )
  61. )
  62. ) );

Para que entiendas cada sección esto es lo que significan:

register_default_headers: La función que crea y muestra las cabeceras por defecto. Acepta varios parámetros.

name: Establece el valor del nombre de la cabecera. También aquí podemos definir valores y claves adicionales.

url: Ruta relativa a la imagen de cabecera. Date cuenta que la ruta por defecto es /images/headers/nombre_de_imagen.jpg

thumbnail_url: Ruta relativa a la miniatura de la imagen de cabecera, que verás en la página de administración del tema. La ruta por defecto es /images/headers/miniatura_de_imagen.jpg

description: Una descripción para la imagen que se muestra al pasar el cursor sobre la imagen de miniatura en el panel de opciones de cabecera del tema.

Más cosas que debes tener en cuenta:

  • Las imágenes de cabecera deben ser de un tamaño de 940×198 pixels, si son más grandes se redimensionan y si son más pequeñas se ajustarán también para rellenar esas dimensiones.
  • Las imágenes de miniatura pueden ser de cualquier tamaño pero el tamaño por defecto es de 230×48 pixels.
  • Las imágenes solo pueden estar en formato .jpg o se ignorarán y no se mostrarán.

Ahora bien, ¿como añado imágenes o cambio las existentes?, pues si has llegado hasta aquí ya habrás imaginado que sustituir las imágenes por defecto por las tuyas es tan sencillo como subir tus imágenes de cabecera a la carpeta adecuada y cambiar nombre, descripción y nombre del fichero.

Pero si quieres añadir más el proceso sería este:

Copias un bloque de imagen (para no tener que teclear mucho) del estándar del fichero functions.php, por ejemplo este:

PHP:
  1. ‘berries’ => array(
  2. ‘url’ => ‘%s/images/headers/berries.jpg’,
  3. ‘thumbnail_url’ => ‘%s/images/headers/berries-thumbnail.jpg’,
  4. /* translators: header image description */
  5. ‘description’ => __( ‘Berries’, ‘twentyten’ )
  6. ),

A continuación pegas el bloque copiado al final de la sección y sustituyes los parámetros para que se adapten a la nueva imagen y miniatura que hayas subido a las carpetas por defecto (o la que tu quieras), por ejemplo:

PHP:
  1. ‘fuego’ => array(
  2. ‘url’ => ‘%s/images/cabeceras/fuego.jpg’,
  3. ‘thumbnail_url’ => ‘%s/images/cabeceras/miniatura-fuego.jpg’,
  4. /* translators: header image description */
  5. ‘description’ => __( ‘Fuego, una imagen caliente para los días de frío’, ‘twentyten’ )
  6. ),

Guardas los cambios y ya tendrás una imagen nueva que cambiar fácilmente a golpe de clic.

Si te gusta ver las cosas más que leerlas en WPbegginer han creado un video que explica este mismo proceso, este:

Crear una página con tus entradas

¿Te acuerdas que en las opciones de lectura hay la opción de mostrar en portada una página con tus entradas?, pues además es algo muy fácil de hacer, vamos a verlo porque lo puedes conseguir en segundos con unas líneas de código. No te asustes, solo tienes que copiar y pegar.

1. Crea la plantilla de página

Abre el fichero page.php de tu tema activo y, tras borrar todo lo que sobra del loop, o sea, que solo dejes la llamada al header, sidebar y footer, le añades uno de estos códigos:

Cualquier versión:

PHP:
  1. <?php
  2. /*
  3. * Template Name: PaginaEntradas
  4. */
  5. load_template(TEMPLATEPATH . '/index.php' );
  6. ?>

WordPress 3.0 y superior:

PHP:
  1. <?php
  2. /*
  3. * Template Name: PaginaEntradas
  4. */
  5. locate_template( array( 'index.php' ), true );
  6. ?>

Guardas el archivo como paginaentradas.php o como te parezca.

2. Crea una página con esa plantilla

Una vez creada la plantilla de página solo tienes que crear una página nueva y, en el widget del editor llamado "Atributos" elegir la plantilla recién creada. No tienes que hacer nada más que darle un nombre y publicarla.

3. Opciones de lectura

Luego, en las opciones de lectura eliges que WordPress muestre una página estática y, de entre las dos opciones disponibles, eliges "Página de entradas", ahí, en el desplegable, seleccionas la página que acabas de crear y guardas los cambios.

¡Ya está, lo conseguiste!

Modifica (o elimina) “/author/” de la URL

Por defecto, WordPress nos crea una URL a cada autor, siguiendo esta estructura: http://tublog.com/author/usuario.

Habrá quienes deseen modificar esa sección, ya que es fea y, si hablamos de blogs hispanos, no encaja del todo bien. También habrá quienes deseen derechamente eliminar esa parte y dejar las URLs como http.//tublog.com/usuario. ¿La solución para ambos? Muy sencilla:

Tan solo añadimos esta linea a nuestro functions.php:

PHP:
  1. add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->author_base = "REEMPLAZA_AQUI"; $wp_rewrite->flush_rules();'));

Esta demás decirte que parte debes modificar del código, pero por si las moscas, reemplaza donde dice REEMPLAZA_AQUI por la base que desees: "perfil", "autor", "usuario", la que quieres. Solo recuerda no borrar las comillas del código y no insertar espacios ni caracteres especiales.

Ahora, si lo que deseas es eliminar completamente esa parte de la URL, simplemente borra el REEMPLAZA_AQUI y no pongas nada (ni siquiera espacios) de modo que quede así:

PHP:
  1. add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->author_base = ""; $wp_rewrite->flush_rules();'));

Obviamente, guarda todo y verás como las URLs de tus autores son ahora http://tublog.com/loquesea/usuario.

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar Wordpress

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Get Adobe Flash playerPlugin by wpburn.com wordpress themes