Blog and Web

10 Códigos útiles para WordPress

WordPress es una plataforma para blogs cada vez más flexible, si a esto le sumamos una comunidad muy activa, obtenemos un gama enorme de posibilidades para expandir, mejorar o personalizar.

A continuación les dejo 10 códigos que me parecen realmente útiles para aumentar el poder de nuestra instalación de WordPress. Muchos estas basados en los relativamente nuevos hooks que permiten modificar una gran cantidad de opciones desde la “comodidad” de los archivos de nuestro theme.

Actualización: Si estos 10 códigos no te bastan, ya esta la segunda parte con otros 10 códigos más.

1. Mostrar contenido solo a usuarios registrados.

Para mostrar contenido solo a usuarios que estén registrados, agrega la siguiente función a tu archivo functions.php:

add_shortcode( 'registrados', 'member_check_shortcode' );

function member_check_shortcode( $atts, $content = null ) {
	 if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
		return $content;
	return '';
}

Y al escribir una página o un post, envuelve el contenido destinado solo a usuarios registrados con las pseudo tags:

[registrados] Aquí el contenido exclusivo [/registrados]

Por: Justintadlock / Vía: AyudaWordPress

2. Deshabilitar el formato automático en los posts

Al publicar en WordPress este hace algunos cambios al formato de tus post, entre ellos cambiar las comillas normales, por comillas curvas, esto generalmente no tiene mayor problema, pero cuando se muestra código en los post, simplemente la comillas curvas nos echarán el código abajo.

Para evitarlo, agrega la siguiente función a tu archivo functions.php:

function my_formatter($content) {
	$new_content = '';
	$pattern_full = '{([raw].*?[/raw])}is';
	$pattern_contents = '{[raw](.*?)[/raw]}is';
	$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

	foreach ($pieces as $piece) {
		if (preg_match($pattern_contents, $piece, $matches)) {
			$new_content .= $matches[1];
		} else {
			$new_content .= wptexturize(wpautop($piece));
		}
	}

	return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

Ahora cada vez que quieras mostrar texto sin el formato de WordPress envuélvelo con las pseudo tags:

[raw] Aquí tu texto con "comillas" rectas [raw]

Por WPRecipes / Vía Smashingmagazine

3. Mostrar el número de seguidores de tu cuenta Twitter en tu blog

Si deseas mostrar el número de followers a tu cuenta Twitter sin recurrir a un servicio externo y con la opción de personalizarlo este es el código que buscas. A tu archivo functions.php agrega la siguiente función:

function string_getInsertedString($long_string,$short_string,$is_html=false){
  if($short_string>=strlen($long_string))return false;
  $insertion_length=strlen($long_string)-strlen($short_string);
  for($i=0;$i<strlen($short_string);++$i){
    if($long_string[$i]!=$short_string[$i])break;
  }
  $inserted_string=substr($long_string,$i,$insertion_length);
  if($is_html && $inserted_string[$insertion_length-1]=='<'){
    $inserted_string='<'.substr($inserted_string,0,$insertion_length-1);
  }
  return $inserted_string;
}

function DOMElement_getOuterHTML($document,$element){
  $html=$document->saveHTML();
  $element->parentNode->removeChild($element);
  $html2=$document->saveHTML();
  return string_getInsertedString($html,$html2,true);
}

function getFollowers($username){
  $x = file_get_contents("http://twitter.com/".$username);
  $doc = new DomDocument;
  @$doc->loadHTML($x);
  $ele = $doc->getElementById('follower_count');
  $innerHTML=preg_replace('/^<[^>]*>(.*)<[^>]*>$/',"\1",DOMElement_getOuterHTML($doc,$ele));
  return $innerHTML;
}

Y en cualquier archivo de tu theme, por ejemplo el sidebar.php, agrega el código encargado de mostrar el número de followers:

<?php echo getFollowers("blogandweb")." followers"; ?>

Sustituye blogandweb, por tu nick en Twitter. El resultado es un número si formato, así que convendrá que agregues algunos estilos CSS o incluirlo en una sección donde tome los estilos por defecto.

Por WP Recipes / Vía WordPress Hacks

4. Deshabilitar el guardado automático en el editor

Mientras escribes un post, WordPress guarda una copia automática cada determinado tiempo, es una ventaja que te evita perder tus artículos no guardados, pero tiene algunas contras como el hecho de guardar post sin contenido, solo por el hecho de entrar al editor y dejarlo abierto unos minutos.

Para deshabilitar esta función, solo agrega al archivo functions.php el siguiente código:

function disableAutoSave(){
    wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disableAutoSave' );

5. Cambiar el avatar por defecto en WordPress

Por defecto WordPress usa al “Hombre misterioso” como avatar por lo usuarios que dejan un comentario y no tienen definido un avatar en gravatar. También te da algunas opciones más, pero si ninguno se adecua a tus necesidades puedes agregar otros a la lista de opciones.

En el archivo functions.php de tu theme agrega:

add_filter( 'avatar_defaults', 'newgravatar' );

function newgravatar ($avatar_defaults) {
    $myavatar = get_bloginfo('template_directory') . '/images/mi-avatar.png';
    $avatar_defaults[$myavatar] = "Blog and Web";
    return $avatar_defaults;
}

Donde mi-avatar.png será la imagen del nuevo avatar que deberá estar ubicada en la carpeta images de tu theme y Blog and Web el texto que aparecerá como descripción en el panel de WordPress.

Ahora solo falta ir al panel de “Discusión” y activar nuestro nuevo avatar.

Por BuildInternet / Vía Kernel Web

6. Excluir ciertas categorías del feed

Hay varias razones para excluir categorías en el feed de tu blog, una de ella es brindar contenido exclusivo en linea y motivar a tus lectores a visitar tu sitio web ocasionalmente. Hay maneras de excluir categorías del feed, una de ellas en agregando a tu archivo functions.php el siguiente código:

function myFeedExcluder($query) {
 if ($query->is_feed) {
   $query->set('cat','-12,-13');
 }
return $query;
}
 
add_filter('pre_get_posts','myFeedExcluder');

Donde 12 y 13 serían los ID’s de las categorías a excluir, cambia esos número por tus propias categorías o agrega más siguiendo el formato de comas y el signo menos.

Por Web Kreation / Vía Ayuda WordPress

7. Mostrar una lista de futuros artículos

Si eres de los que programan entradas cada semana esta función te puede ser útil, pues muestra los post que están programados para publicarse. En el lugar de tu theme donde quieras aparezca esta lista, por ejemplo en sidebar.php, agrega el siguiente código:

<h2>Pronto leerás:</h2>
<ul>
<?php
$my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <li><?php the_title(); ?></li>
    <?php endwhile;
}
?>
</ul>

No olvides darle estilos CSS si es necesario.

Por WP Recipes / Vía TodoWP

8. Mostrar las entradas publicadas entre dos fechas específicas

En el archivo index.php de tu theme, ubica el loop y justo al inicio de este pega el siguiente código:

<?php
  function filter_where($where = '') {
        $where .= " AND post_date >= '2009-05-01' AND post_date <= '2009-05-15'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>

En la tercera linea cambia 2009-05-01 y 2009-05-15 por tus propias fechas.

Por CodexWP / Vía WP Recipes y Web Designer Wall

9. Mostrar publicidad después del primer post

Se puede hacer agregando un contador al loop del archivo de tu theme index.php. En el siguiente esquema puede notarse:

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); $loopcounter++; ?>

  // Los códigos normales del loop. Título, contenido, etc.

  <?php if ($loopcounter <= 1) { include (TEMPLATEPATH . '/publicidad.php'); } ?>

<?php endwhile; ?>

<?php else : ?>

<?php endif; ?>

En negritas el código que debes agregar a tu archivo. Después solo crear un archivo en el bloc de notas llamado publicidad.php con el código de la publicidad en él y guardarlo en el directorio de tu theme.

10. Elimina el mensaje de “Actualiza tu blog”.

Las nuevas versiones de WordPress muestran un poco discreto mensaje de que hay una versión disponible de WordPress pidiendo te actualices, es útil para el administrador del blog, pero no así para los lectores o escritores que ni tienen los permisos para actualizarlo. Si a esto le sumamos una actualización cada dos semanas hay motivos para eliminar esta advertencia.

En el archivo functions.php agrega el siguiente código:

if (!current_user_can('edit_users')) {
  add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
  add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}

De este modo los usuarios que no tienen forma de actualizar WordPress no verán el mensaje. ¿No quieres verlo ni tu? ¿Te enteras más rápido por otros medios y no requieres tampoco el mensaje? Entonces elimina la primer y última linea del código y no te molestará más.