Как выводить количество просмотров с файла single.php на главную станицу

(Ответов: 12, Просмотров: 1643)
Страница 1 из 2 12 Последняя
  1. Опытный
    • Регистрация: 06.08.2013
    • Сообщений: 307
    • Репутация: 5
    В файле single.php я считаю количество просмотров и вывожу их там. Как мне сделать, чтобы количество просмотров можно было выводить на главной и брать данные с файла single.php
    Вот исходник файла single.php:
    PHP код:
    <?php get_header()?>
            <div id="main">
            <div class="beadcrumb">
                        <div class="left_crumb">
                            <div class="path"></div>
                        </div>
                        <div class="bg_crumb">
                             <?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?> 
                        </div>
                        <div class="right_crumb"></div>
                        <div class="right_corner_crumb"></div>
                    </div>    
                <?php get_sidebar()?>    
                <div id="content">
                    <div class="corner_content"></div>    
                <?php if(have_posts()):?>
                    <?php  while(have_posts()):the_post()?>             
                <div class="title">
                        <div class="left_title_content"></div>
                        <div class="background">
                            <h1><a href="<?php the_permalink();?>"><?php the_title();?></a></h1>
                        </div>
                        <div class="right_title_content"></div>
                    </div>
                    <div class="info_content">
                        <ul>
                            <li><span>Добавил:</span><span class="author_news"><?php the_author();?></span>|</li>
                            <li><span><?php echo get_the_date();?></span>|</li>
                            <li><span>Просмотров:</span><span><?php echo getPostViews(get_the_ID());?></span>|</li>
                            <li><span>Комментариев:</span></li>
                        </ul>
                    </div>
                    <div class="end"></div>
                    <div class="line"></div>
                    <?php the_post_thumbnail();?>
                    <div class="content"><?php the_content();?>
                    <?php comments_template();?>
                        <div class="border_title"></div>
                    <div class="info_category">
                        <div class="line_bottom_content"></div>
                    </div>
                    <div class="download">
                        <img src="<?php bloginfo('template_url');?>/img/download.gif">
                    </div>
                        <div id="files_get">
                        <p>Скачать файл:</p>
                        <?php if ( get_post_meta($post->ID'turbobit'true) ) : ?>  
                            <a href="<?php echo get_post_meta($post->ID"turbobit"true); ?>" rel="nofollow" class="turbobit" target="_blank">   
                            </a>  
                        <?php endif; ?>  

                        <?php if ( get_post_meta($post->ID'deposit'true) ) : ?>  
                            <a href="<?php echo get_post_meta($post->ID"deposit"true); ?>" rel="nofollow" class="deposit" target="_blank">   
                            </a>  
                        <?php endif; ?> 
                        <?php if ( get_post_meta($post->ID'letitbit'true) ) : ?>  
                            <a href="<?php echo get_post_meta($post->ID"letitbit"true); ?>" rel="nofollow" class="letitbit" target="_blank">   
                            </a>  
                        <?php endif; ?> 
                        </div>
                     <div class="social"> 
                         <p>Поделится в соц.сети:</p>
                         <div class="share42init" data-url="<?php the_permalink() ?>" data-title="<?php the_title() ?>"></div>
                     </div>
                    <script type="text/javascript" src="http://fr3809bb.bget.ru/share42/share42.js"></script> 
                    </div>                
                        <!--похожие статьи-->
                    <div class="recents"> <!--Вывод предыдущих записей, где опубликован пост (записей из рубрики)-->    
                        <p><strong>Похожие записи:</strong></p>
                            <ul>
                        <?php
                            $tags 
    wp_get_post_tags($post->ID);
                            if (
    $tags) {
                                
    $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(); ?>
                            <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Постоянная ссылка <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
                            <?php endwhile;}
                            
    wp_reset_query();}
                                
    ?>
                            </ul>
                            <!--Вывод -->
                            <ul>
                                <?php $posts get_posts('orderby=rand&numberposts=5');
                                foreach(
    $posts as $post) { ?>
                                <li><a href="<?php the_permalink(); ?>
                                " title="<?php the_title(); ?>"><?php the_title(); ?></a>
                                </li>
                                <?php ?>
                            </ul>
                    </div>
                        <!--конец похожих статей-->                
                    <?php endwhile;?>        
                        <?php endif;?>                
                </div>
            <?php include(TEMPLATEPATH.'/right.php');?>
            </div>
            <?php get_footer()?>
    Зарание благодарен!
    • 0
  2. Опытный Аватар для doctordick
    • Регистрация: 03.09.2009
    • Сообщений: 302
    • Записей в дневнике: 1
    • Репутация: 60
    Смотрите файл index.php, ну и вставляйте где необходимо Ваше:
    PHP код:
    ... <?php echo getPostViews(get_the_ID());?> ...
    • 0
  3. Опытный
    • Регистрация: 06.08.2013
    • Сообщений: 307
    • Репутация: 5
    doctordick,так не подойдет. В таком случае будет считаться и просмотр страницы и к просмотрам записей будет добавляться +1, даже и не посещая их. Нужно, чтобы брался именно количество просмотров постов и выводилось на главной странице
    • 0
  4. Опытный Аватар для doctordick
    • Регистрация: 03.09.2009
    • Сообщений: 302
    • Записей в дневнике: 1
    • Репутация: 60
    SergeyNetIt если Вы использовали такой вариант getPostViews

    PHP код:
    function getPostViews($postID){
        
    $count_key 'post_views_count';
        
    $count get_post_meta($postID$count_keytrue);
        if(
    $count==''){
            
    delete_post_meta($postID$count_key);
            
    add_post_meta($postID$count_key'0');
            return 
    "0 View";
        }
        return 
    $count.' Views';

    никаких +1 там нету.

    +1 работает для setPostViews
    • 0
  5. Опытный
    • Регистрация: 06.08.2013
    • Сообщений: 307
    • Репутация: 5
    doctordick,Смотрите. да я использовал такой вариант функции getPostViews:
    PHP код:
    function getPostViews($postID){
        
    $count_key 'post_views_count';
        
    $count get_post_meta($postID$count_keytrue);
        if(
    $count==''){
            
    delete_post_meta($postID$count_key);
            
    add_post_meta($postID$count_key'0');
            return 
    "0";
        }
        return 
    $count;

    Функция setPostViews:
    PHP код:
    function setPostViews($postID) {
        
    $count_key 'post_views_count';
        
    $count get_post_meta($postID$count_keytrue);
        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);
        }

    В файле single.php я сначала прописываю функцию
    PHP код:
    <?php setPostViews(get_the_ID());?>
    для сбора статистики. А потом вывожу ее в нужном мне месте тоже в цикле так:
    PHP код:
    <?php echo getPostViews(get_the_ID());?>
    . Все привильно работает. Я захожу в конкретный пост и срабатывает счетчик.
    Но, я хочу вывести значение этого счетчика на главную страницу, где будут находится все посты и для них будут выводится количество просмотров, которое должно браться из single.php.
    В файле single.php я в цикле просто пишу
    PHP код:
    <?php echo getPostViews(get_the_ID());?>
    . Нажимаю обновить. Счетчики не обновляются на главной - это мне и нужно. Но захожу по ссылке на конкретный пост и вижу, что счетчик все равно внутри сработал. Значение +1.
    Как быть???
    • 0
  6. Опытный Аватар для doctordick
    • Регистрация: 03.09.2009
    • Сообщений: 302
    • Записей в дневнике: 1
    • Репутация: 60
    Главная страница это index.php и в ней только getPostViews.
    Собственно страницы это single.php, в котором setPostViews и getPostViews.
    отсюда:

    Счетчики не обновляются на главной - это мне и нужно.
    Но захожу по ссылке на конкретный пост и вижу, что счетчик все равно внутри сработал. Значение +1.
    Оно так и работает. Я не пойму, что Вам нужно? Ведь на главной только вывод, а на конкретной странице +1 и вывод.
    • 0
  7. Опытный
    • Регистрация: 06.08.2013
    • Сообщений: 307
    • Репутация: 5
    doctordick,Все, исправил, то у меня была ошибка, не закрыл скобку. Все работает. Но конечно не так как хотелось. Если один пользователь будет по несколько раз заходит на одну и ту же запись или обновлять страницу будет происходить +1. не подскажите, как добиться уникального просмотра в день?
    • 0
  8. Опытный Аватар для doctordick
    • Регистрация: 03.09.2009
    • Сообщений: 302
    • Записей в дневнике: 1
    • Репутация: 60
    SergeyNetIt
    Самый легкий способ - выставлять куки пользователю со сроком истечения 1 день для каждой просмотренной страницы.
    Но здесь свои грабли - пользователь куки может и убить и проигнорировать и т.п. Простого грамотного способа я не вижу :-(
    • 0
  9. Опытный
    • Регистрация: 06.08.2013
    • Сообщений: 307
    • Репутация: 5
    doctordick,А реализацию идеи не подскажите или где можно про это почитать?
    • 0
  10. Опытный Аватар для doctordick
    • Регистрация: 03.09.2009
    • Сообщений: 302
    • Записей в дневнике: 1
    • Репутация: 60
    Попробуйте что-то типа такого:

    PHP код:
    function setPostViews($postID) {
        
    $count_key 'post_views_count';
        
    $count get_post_meta($postID$count_keytrue);
        if (
    $count == '') {
            
    delete_post_meta($postID$count_key);
            
    add_post_meta($postID$count_key'1');
        } else {
        
            if (!isset(
    $_COOKIE['viewed_posts'][$postID])) {
                
    $count++;
                
    update_post_meta($postID$count_key$count);
            } else {
                if (!
    headers_sent()) {
                    
    setcookie('viewed_posts[' $postID ']'''time() + (3600 24));
                }
            }
            
        }

    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Как увеличить количество просмотров на новостном сайте?
Вопросы от новичков 17 24.11.2013 21:40
Как узнать количество просмотров статьи?
WordPress 2 28.03.2013 11:29
Как в wordpress не выводить страницу на главную
Вопросы от новичков 6 01.02.2013 23:31
НЧ и количество просмотров страниц
Общие вопросы поисковой оптимизации 5 25.11.2012 16:04
Как выводить на главную только некоторые анонсы постов
WordPress 2 17.08.2012 21:02

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры