19 códigos útiles, hacks, para WordPress

wordpress-hacks

Si eres un diseñador de themes para WordPress, o simplemente te gusta añadirle cosas nuevas a tu blog este artículo te interesará, pues aquí recopilo algunos trucos y/o códigos de WordPress para mejorar la apariencia o funcionalidad de tu theme.

Mostrar un anuncio de AdSense después del primer artículo

Solo necesitas añadir la variable ($loopcounter) en el Loop. Si $loopcounter es menor o igual a 1, entonces incluye el código que se encuentra en google-ad.php.

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); $loopcounter++; ?>
// Cosas del Loop
<?php if ($loopcounter <= 1) { include (TEMPLATEPATH . '/google-ad.php'); } ?>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>

Mostrar artículos recientes

El siguiente código muestra los últimos 5 artículos del blog mostrados en una lista:

<?php query_posts('showposts=5'); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>

Mostrar últimos comentarios

El siguiente código muestra los últimos 10 comentarios mostrados en una lista:

<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"En " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?>

Mostrar los artículos más populares

El siguiente código muestra los 10 artículos más populares del blog:

<h2>Artículos Populares</h2>
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?>
</ul>

Mostrar una nube de etiquetas

El siguiente código muestra una nube de etiquetas donde ‘smallest‘ es el tamaño en pixéles de las palabras más pequeñas y ‘largest‘ es el tamaño de la palabras más grandes:

<?php wp_tag_cloud('smallest=8&amp;amp;amp;largest=36&amp;amp;amp;'); ?>

Títulos dinámicos SEO

El siguiente código muestra un título diferente para cada página, sea el home, un artículo o una página de categorías:

<title>
<?php if ( is_home() ) { ?><? bloginfo('name'); ?> | <?php bloginfo('description'); ?><?php } ?>

<?php if ( is_search() ) { ?>Resultados de Búsqueda para <?php $allsearch = &amp;amp;amp;new WP_Query("s=$s&amp;amp;amp;showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); echo $key; _e(' — '); echo $count . ' '; _e('artículos'); wp_reset_query(); ?><?php } ?>

<?php if ( is_404() ) { ?><? bloginfo('name'); ?> | 404 Nada Encontrado<?php } ?>

<?php if ( is_author() ) { ?><? bloginfo('name'); ?> | Archivos por Autor<?php } ?>

<?php if ( is_single() ) { ?><?php wp_title(''); ?> | <?php $category = get_the_category(); echo $category[0]->cat_name; | <? bloginfo('name'); ?><?php } ?>

<?php if ( is_page() ) { ?><? bloginfo('name'); ?> | <?php $category = get_the_category(); echo $category[0]->cat_name;  ?>|<?php wp_title(''); ?><?php } ?>

<?php if ( is_category() ) { ?><?php single_cat_title(); ?> | <?php $category = get_the_category(); echo $category[0]->category_description; ?> | <? bloginfo('name'); ?><?php } ?>

<?php if ( is_month() ) { ?><? bloginfo('name'); ?> | Archivo | <?php the_time('F, Y'); ?><?php } ?>

<?php if ( is_day() ) { ?><? bloginfo('name'); ?> | Archivo | <?php the_time('F j, Y'); ?><?php } ?>

<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><?php single_tag_title("", true); } } ?> | <? bloginfo('name'); ?>
</title>

rel=canonical en los enlaces de los comentarios

Este código es para evitar el contenido duplicado en la paginación de los comentarios. Solo debes poner el siguiente código en el archivo functions.php:

function canonical_en_comentarios() {
global $cpage, $post;
if ( $cpage > 1 ) :
echo "\n";
echo "<link rel='canonical' href='";
echo get_permalink( $post->ID );
echo "' />\n";
endif;
}
add_action( 'wp_head', 'canonical_en_comentarios' );

Deshabilitar el auto-guardado de los artículos

Para hacer esto solo debes poner el siguiente código en el archivo functions.php:

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

Como incluir JQuery en tu theme de WordPress

Solo debes poner el siguiente código en el archivo header.php entre las etiquetas <head> y </head>:

<?php wp_enqueue_script("jquery"); ?>

Mostrar contenido solo a usuarios registrados

Solo debes poner el siguiente código en el archivo functions.php:

add_shortcode( 'registrados', 'member_check_shortcode' );

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

Una vez hecho esto rodeas el contenido que quieras mostrar solo a usuarios registrados así:

[registrados]
Este texto solo será mostrado a los usuarios registrados.
[/registrados]

Mostrar el número de usuarios de tu blog

Solo debes poner el siguiente código en cualquier lugar de tu theme donde quieras mostrar el número de usuarios:

$users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");
echo $users." usuarios registrados.";

Mostrar el número de followers en Twitter

Solo debes poner el siguiente código en el archivo functions.php:

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 &amp;amp;&amp;amp; $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 luego lo siguiente lo debes poner en donde quieras mostrar el número de followers, cambiando ‘trazosweb’ por tu nombre de usuario en Twitter:

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

Mostrar AdSense solo a visitantes provenientes de los buscadores

Solo debes poner el siguiente código en el archivo functions.php:

function adsense_buscadores(){
$ref = $_SERVER['HTTP_REFERER'];
$SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
foreach ($SE as $source) {
if (strpos($ref,$source)!==false) return true;
}
return false;
}

Luego pones el siguiente código en cualquier parte de tu theme en donde quieras mostrar tus anuncios:

if (function_exists('adsense_buscadores')) {
if (adsense_buscadores()) {
//AQUÍ INSERTAS TU CÓDIGO DE ADSENSE
}
}

Mostrar artículos relacionados sin necesidad de plugin

Este hack muestra 5 enlaces a artículos relacionados con la primera etiqueta del actual artículo. Solo debes poner el siguiente código dentro del Loop de WordPress, generalmente en el archivo single.php:

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Artículos Relacionados';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Enlace Permanente a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
endwhile;
}
}
?>

Mostrar el número promedio de comentarios

Solo debes poner el siguiente código en cualquier parte de tu theme en donde quieras mostrar este dato:

<?php
$count_posts = wp_count_posts();
$posts = $count_posts->publish;
$count_comments = get_comment_count();
$comments  = $count_comments['approved'];
echo "Aproximadamente ".round($comments/$posts)." comentarios por artículo.";
?>

Mostrar el número de suscriptores en FeedBurner

Para esto solo debes poner el siguiente código en cualquier parte de tu theme:

<?php
$fburl=”https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=Aqui-va-la-URL-de-FeedBurner“;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $fburl);
$stored = curl_exec($ch);
curl_close($ch);
$grid = new SimpleXMLElement($stored);
$rsscount = $grid->feed->entry['circulation'];
echo $rsscount;
?>

Mostrar una lista de artículos aleatorios

Este código muestra una lista de 10 artículos aleatorios:

<h3>Artículos Aleatorios</h3>
<ul>
<?php
query_posts(array('orderby' => 'rand', 'showposts' => 10));
if (have_posts()) :
while (have_posts()) : the_post();
?>
<li><a href="<?php echo the_permalink(); ?>" title="Enlace Permanente a <?php echo the_title() ?>"><?php echo the_title() ?></a></li>
<?php endwhile;
endif; ?>
</ul>

Mostrar una lista de los últimos artículos de cierta categoría

Este código muestra una lista de 10 artículos recientes de una determinada categoría. Debes reemplazar el valor de category_name por la categoría que quieres que sea mostrada:

<?php query_posts('category_name=photoshop&amp;amp;showposts=10'); ?>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</li>
<?php endwhile; ?>

Mostrar el número total de comentarios

Puedes poner el siguiente código en cualquier parte de tu theme para mostrar este dato:

<?php
$numcomms = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '1'");
if (0 < $numcomms) $numcomms = number_format($numcomms);
echo "Hay en total ".$numcomms." comentarios en mi blog";
?>

Referencias

Este artículo utilizó material de los siguientes sitios, entra en ellos para más trucos, tips y hacks para WordPress:

0 Comentarios en “19 códigos útiles, hacks, para WordPress”