Cómo ordenar las entradas en WordPress según el número de “Me gusta” de Facebook

Las entradas en WordPress pueden ser ordenadas según su fecha, el título, etc…, pero existe una forma de que podamos ordenarlas según el número de “Me gustas” de Facebook que cada una de ellas tenga, aunque pare ello debemos retocar bastante el código, en la entrada de hoy pretendo explicarles en la medida de lo posible y de la mejor forma que se entienda. ¿Cómo ordenar dichas entradas según el número indicado de “Me gusta”?.

Como el proceso es algo largo, intentaré resumirlo lo que más pueda, pero antes de nada, debemos hacer una copia de seguridad de los siguientes archivos: funtions.php, header.php, footer.php, index.php, archive.php, pues estos son los ficheros que vamos a emplear para realizar las modificaciones pertinentes.

Añadiendo la función a functions.php

Añade el siguiente código al fichero arriba mencionado, al final del todo y antes del cierre de PHP.

function inserta_customfield_facebook($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'numero_megusta', '0', true);
}
}
add_action('publish_page', 'inserta_customfield_facebook');
add_action('publish_post', 'inserta_customfield_facebook');

 

Mediante el código anterior se crea automáticamente un campo personalizado para cada entrada que denominamos “numero_megusta” y en el mismo se almacenará el número de veces que un usuario hace click en “Me gusta”, pero claro, esto no se llevará a cabo hasta que retoquemos el código del loop.

Contabilizando el número de “Me gusta”

Una vez que tenemos la función que nos agrega a cada entrada la variable que necesitamos para realizar el recuento, debemos añadir el siguiente código en el header.php, de tal forma que vayamos actualizando el número de dicho campo personalizado. Esto podemos hacerlo a nuestro gusto, bien en el fichero header.php o en el footer.php

 

global $wp_query;
$paginaweb = get_permalink();
$idpost = $wp_query->post->ID;
$data = file_get_contents('http://graph.facebook.com/?id='.$paginaweb);
$json = $data;
$obj = json_decode($json);
$like_no = $obj->{'shares'};
$meta_values = get_post_meta($idpost, 'numero_megusta', true);

if ($like_no == $meta_values) {
}else if (empty($meta_values)) {
   add_post_meta($idpost , 'numero_megusta', $like_no, true);
   update_post_meta($idpost , 'numero_megusta', $like_no, false);
} else {
   update_post_meta($idpost, 'numero_megusta', $like_no, false);
}

 

[wp-like-locker]

Creando el loop y actualizando campos

El último paso que nos queda es crear el loop de nuestras entradas, modificando el fichero index.php, archive.php o loop.php en el caso de que el tema o plantilla que tengas lo emplee, debiendo asimilarse a la siguiente forma:

<?php
$query_facebook = new WP_Query();
$query_facebook->query('posts_per_page=20&meta_key=numero_megusta&orderby=meta_value&order=desc&paged='.$paged);

while ($query_facebook->have_posts()) : $query_facebook->the_post(); ?>
<div id="post-<?php the_ID(); ?>" class="post">
    <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
Fecha: <?php the_time('j M Y') ?> <?php the_excerpt(); ?>
<div class="boton_facebook">
< iframe src="http://www.facebook.com/widgets/like.php?href=<?php the_permalink(); ?>&layout=button_count&show_faces=false&width=100&action=like&font&colorscheme=light&height=20&locale=es_ES" frameborder="0" allowtransparency scrolling="no"></iframe>
</div> </div>
<?php endwhile; ?>

Debemos recordar que este último paso es necesario hacerlo adecuadamente y ajustado a nuestra plantilla para que podamos ver el resultado final.

[/wp-like-locker]
[info_box_1 title=”¡A tener en cuenta!”]Es necesario realizar esto en un blog de prueba antes de hacer los cambios y disponer de las copias de seguridad necesarias.[/info_box_1]

 


Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *