martes, 20 de julio de 2010

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

b2evolution, el papá de WordPress sigue vivo

Posted: 20 Jul 2010 10:19 AM PDT

Por si no repasaste la lección de historia, WordPress es un fork de b2evolution y, por si te interesa probar un sistema de publicación nuevo, debes saber que pronto estará disponible una nueva versión.

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 Domina tu Blog

Acorta los títulos

Posted: 20 Jul 2010 10:14 AM PDT

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.

domingo, 18 de julio de 2010

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Cambiar el tema por defecto en tus sitios sin plugin

Posted: 18 Jul 2010 01:34 PM PDT

Si quieres cambiar el tema por defecto, ya sea para una instalación sencilla o para una instalación multisitio de WordPress 3.0, puedes hacerlo gracias a un código poco documentado pero que funciona a la perfección.

Solo tienes que añadir la siguiente línea al fichero wp-config.php del sitio o sitios en los que quieras definir un tema por defecto:

PHP:
  1. define('WP_DEFAULT_THEME', 'classic');

Lo único que tienes que elegir es el nombre de la carpeta del tema que quieres cargar por defecto, en el ejemplo la carpeta del tema Classic, algo genial para instalaciones nuevas personalizadas.

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

Estilos de paginación para WP-PageNavi

Posted: 15 Jul 2010 03:02 PM PDT

Wp-Pagenavi es unos de los plugins mas descargados para la paginación en tu sitio o blog, navegando en la red encontré algunos estilos. para darle el gusto bueno a este importante plugin.

Click Para Ver Los Otros Estilos

COMO INSTALAR

1) tener instalado y en funcionamiento Wp-Pagenavi

2) Descargar los 10 estilos de navegación       :: DESCARGAR ::

3) En el paquete descargado se encuentran los 10 estilos superados por carpeta

4) Escojes el estilo que sea de tu agrado y lo subes con FTP en la siguiente direccion:

wp-content/my-plugins/wp-pagenavi/pagenavi-css.css "SE SUBEN LOS ARCHIVOS QUE ESTAN EN LA CARPETA, REEMPLAZAS EL ARCHIVO" 

5) No necesitas tocar el codigo. solo sube los arhivos que esten dentro de la carpeta al directorio..

SI TIENES ALGUNA DUDA U ALGÚN PROBLEMA NO DUDES EN

COMENTAR ;)

Cuentas unificadas en el Codex

Posted: 15 Jul 2010 12:26 AM PDT

Además de los cambios estéticos que nos contaba Ejner, lo que también ha cambiado en WordPress.org es que se han unificado las cuentas de usuario que utilizábamos en el sitio. Hasta ahora había registro separado para la zona de descargas (plugins y temas) y foros, y para el Codex, pero si has intentando entrar desde hace 3 días te habrás encontrado con que no te acepta el usuario y contraseña de usuario con el que te registraste en el Codex.

De todos modos no te preocupes porque puedes usar tu usuario y clave del resto de áreas para acceder al Codex, y conservarás tus páginas en seguimiento, aportaciones y demás configuraciones de tu perfil (casi todas), así que el cambio ha sido - si me apuras - a mejor, para no tener 2 usuarios en un mismo sitio.

Creo que es una ocasión estupenda para visitar el Codex, comprobar tu usuario y plantearte ayudar a la traducción de la documentación oficial, aunque solo sea 15 minutos a la semana ¿no te parece?

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 Windows Live Writer

WordPress.org se rediseña

Posted: 14 Jul 2010 08:10 PM PDT

WordPress.org estrena un nuevo diseño que concuerda con el esquema de la versión 3.0, que ya esta visible en toda la web (Codex, Blog Oficial, Foros, etc) exceptuando los sitios para las localizaciones oficiales (que aún tienen el viejo diseño).

Aunque por el momento solo es un rediseño de CSS y no de estructuración y distribución de los contenidos y menú. A mi juicio, la web se ve "más limpia" ¿Efecto visual? Tal vez. ¿Que te parece este nuevo diseño?

La mayoría de las ocasiones solo necesitas WordPress.com

Posted: 13 Jul 2010 04:50 PM PDT

Si quieres tener presencia en Internet, el 99% de las veces no necesitas más que un sitio gratuito en WordPress.com

Multisitio en WordPress 3.0 a un clic

Posted: 13 Jul 2010 03:19 PM PDT

  1. Instalas y activas este plugin
  2. Vas a Ajustes -> Activar multisitio
  3. Rellenas la información que te pide
  4. Haces clic en el botón "Install"
  5. Vuelves a acceder a tu panel de WordPress

:)

Joomla, Drupal y Wordpress

Posted: 13 Jul 2010 11:08 AM PDT

Hola.

He llegado aquí mientras buscaba información sobre Joomla y Drupal y al final me he pasado toda la tarde leyendo artículos re-encachados que he encontrado aquí sobre este tema. Verán, uso WP desde hace un par de años tanto en mi blog personal como en mi trabajo haciendo plugins a pedido (sólo plugins no temas ni he usado el famoso loop).

Siempre he pensado que Joomla y Drupal son bastante diferentes a WP, aunque estos sólo los he visto muy por encima. A tal punto que hace tiempo quiero encontrar algún justificativo que me impulse a desarrollar alguna solución basada en ellas, cualquiera de las dos. Tengo la idea de que me pueden permitir estar un poco más cerca de la programación a mano.

Veo a ambas como en un estado intermedio (y siempre en relación a su uso más por parte de un programador de un CMS que como administrador de uno) entre wordpress y un framework como, por ejemplo, Codeigniter.

Es decir, creo que con el sistema de hooks de WP se puede hacer absolutamente de todo. Pero si se trata de hacer un sistema que básicamente sea algo más que para escribir artículos y administrarlos (por ejemplo un sistema para reserva de vuelos/visitas/entradas), Joomla y Drupal debieran superarlo. Ya sé que no es así, lo acabo de decir, con WP se puede hacer de todo.

He aquí una excelente oportunidad para mostrar mi primer plugin WP gratuito y que pronto descansará en paz para siempre (terminado el mundial batirá records entre los plugins menos bajados): http://nomikos.info/2010/06/10/fifa-world-cup-south-africa-scoreboard-wp-plugin.html.

Actualiza automáticamente los resultados después de cada partido recabando datos en el sitio de la FIFA mediante un scraper interno. A todas vista una extensión que no tiene nada que ver con manipular artículos. Pero aún así Joomla y Drupal parecen de aplicación más general recién instalados (out of the box).

Bueno, leyendo algunos artículos y referencias encontradas aquí, me están haciendo cambiar de opinión. Sinceramente sería fantástico especializarse realmente a fondo en sólo un sistema manejador de contenidos y dejar más tiempo para profundizar en otros aspectos de la programación web como puede ser el javascript orientado a objetos, que es lo que más rápido está cambiando ahora.

Cuando empecé a trabajar en rentacoder.com (ahora vworker.com) hice una búsqueda de los términos Joomla, Drupal y Wordpress en los jobs ofrecidos. WP ganó por lejos y por eso lo empecé a estudiar en pos de aumentar mi mercado de trabajo. Aún así Joomla y Drupal aparecen a diario y parecen tener un nicho ganado cada uno por cuenta propia. Y me sigue pareciendo que WP es más usado en sitios (varios muy importante por cierto) netamente de noticias y publicación de artículos. Mientras que Joomla y Drupal en sitios multipropósito. Y en esto sólo queda adaptarse a lo requerido en el mundo real.

La razón de este post más que confrontar estos CMS desde el punto de vista técnico o de usabilidad es saber de sus experiencias en cuanto a rendimiento y uso de recursos computacionales de cada uno. Ya que si con los tres se puede hacer más o menos lo mismo como lo demuestra http://www.cmsshowdown.com/competition (sí, lo vi aquí primero o/\o) entonces lo que sigue en importancia es el rendimiento neto de cada sistema. No está de más agregar que al momento de la elección del ganador se decidió por un empate.

También sería interesante hablar un poco sobre los resultados de esta confrontación, en que WP perdió por lejos en cuanto al tiempo (en horas) necesario para desarrollar un sitio modelo bastante completo, con galería de imágenes, encuestas y avisos clasificados: (D: 79.25, J: 57.25, WP: 90.5) y líneas de código a crear/optimizar en cada sistema base --recién instalado (D: 220, J: 30, WP: 1.808) hasta lograr los objetivos requeridos. Cosa que todos lograron.

Gracias por su participación.

domingo, 11 de julio de 2010

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Tutorial: crear una barra con los datos del autor

Posted: 11 Jul 2010 03:45 PM PDT

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).

Seguidores

Archivo del blog