Criar pagina com posts mais lidos
-
Olá pessoal estou com uma duvida de como crio uma pagina com os posts mais lidos.estou quebrando a cabeça
-
Existe este plugin https://wordpress.org/plugins/wordpress-popular-posts/
Adicione este código em ( functions.php )
function wpb_set_post_views($postID) { $count_key = 'wpb_post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } } remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); function wpb_track_post_views ($post_id) { if ( !is_single() ) return; if ( empty ( $post_id) ) { global $post; $post_id = $post->ID; } wpb_set_post_views($post_id); } add_action( 'wp_head', 'wpb_track_post_views'); function wpb_get_post_views($postID){ $count_key = 'wpb_post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0"; } return $count.''; } function getPostViews($postID){ $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0"; } return $count.''; } function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } } add_filter('manage_posts_columns', 'posts_column_views'); add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2); function posts_column_views($defaults){ $defaults['post_views'] = __('Visualizações'); return $defaults; } function posts_custom_column_views($column_name, $id){ if($column_name === 'post_views'){ echo getPostViews(get_the_ID()); } }
Criando a template ( topartigos.php )
Seus posts serão exibidos por número de visualizações.
Do mais visitado para o menos visitado!<?php /* Template Name: Top Artigos */ get_header(); ?> <article id="post-<?php the_ID(); ?>" class="art-post art-article"> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php if(is_home() && $post==$posts[0] && !is_paged()) echo ' firstpost';?> <ul> <?php $popularpost = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 24, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); ?><?php while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile;?> </ul> <?php endwhile; else: ?> <?php endif; ?> </article> <?php get_footer(); ?>
Adicione esta linha em ( single.php )
<?php setPostViews(get_the_ID()); ?>
Eu tenho um artigo no meu blog que ensina basicamente o mesmo que o Marcio sugeriu, a única diferença é que o meu código guarda um cookie, para que a pessoa não fique guardando views varias vezes de uma só pessoa (F5)
Caso queira botar a mão na massa mesmo, então, segue o link:
http://wpmidia.com.br/tutoriais/criando-um-contador-de-visualizacoes-de-posts-sem-usar-plugins/Caso contrário, use um plugin.
Abs…
- O tópico ‘Criar pagina com posts mais lidos’ está fechado para novas respostas.