Suporte » Plugins » Criar pagina com posts mais lidos

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • Moderador Míriam de Paula

    (@miriamdepaula)

    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()); ?>

    Moderador Míriam de Paula

    (@miriamdepaula)

    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…

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • O tópico ‘Criar pagina com posts mais lidos’ está fechado para novas respostas.