2010-06-18 3 views
1

Я просто хочу создать плагин, который будет, когда посетитель (пользователь, посетитель, ...) посещает какой-то пост, помнит, что сообщение, и увеличивать счетчик этого сообщения, я написал этот код, но иногда счетчик увеличивается, даже сообщение не просматривается, или сообщение с другим идентификатором добавляется в таблицу. Может кто-то поможет мне в этом, пожалуйста. Я знаю, что для этого есть плагины, которые я пытаюсь сделать, но все же хочу написать этот плагин.Wordpress создание плагина для большинства проблем с сообщениями?

function IncrementPostCount($the_content) { 
    global $post; 
    global $wpdb; 

    if(($post->post_status == 'publish') && (int)$post->ID) { 

     if(is_single()) { // just for single post - not for page 
      $postID = (int)$post->ID; 

      $postTitle = urlencode($post->post_title); 
      $postLink = urlencode(get_permalink($post->ID)); 

      $oneRow = $wpdb->get_row("SELECT * FROM wp_postovi WHERE postAjDi='$postID'"); 

      if(empty ($oneRow)) { 
       $postCounter = 1; 
       $data_array = array(
        'readnTimes' => $postCounter, 
        'linkPost'=>$postLink, 
        'TitlePost'=>$postTitle, 
        'postAjDi'=>$postID); 
       $wpdb->insert('wp_najcitaniji_postovi', $data_array);     
      } 
      else { 
       $postCounter = intval($oneRow->readnTimes) + 1; 
       $data_array = array('readnTimes' => $postCounter); 
       $where_array = array('postAjDi'=>intval($oneRow->postAjDi)); 
       $wpdb->update('wp_postovi',$data_array,$where_array); 
      } 

      return $the_content; 
     } 
     return $the_content; 
    } 
} 
add_filter('the_content','IncrementPostCount'); 

Извините, мой плохой английский, tnx заранее.

+0

Я думаю, что это немного перебор, чтобы использовать пользовательские таблицы - таблица 'postmeta' должна дать вам достаточно пространство для передышки. И вы проверили существующие плагины, которые вполне могут сделать то, что вы пытаетесь достичь? http://wordpress.org/extend/plugins/search.php?q=popular – TheDeadMedic

+0

Я хочу написать свой собственный плагин, я не знаю, как столбец после meta (meta_id, post_id, meta_key, meta_value) может мне помочь, можете ли вы быть Я немного конкретнее? Возможно, вы ошибаетесь в моем коде? – user147

ответ

1

Вот как это сделать с таблицей postmeta.

function IncrementPostCount(){ 
    if(is_single()){ 
    global $wp_query; 
    $count = get_post_meta($wp_query->post->ID, 'readnTimes', true); 
    $count = empty($count) ? 1 : $count + 1; 
    add_post_meta($wp_query->post->ID, 'readnTimes', $count, true) or update_post_meta($wp_query->post->ID, 'readnTimes', $count); 
    } 
} 
add_action('template_redirect', 'IncrementPostCount'); 

Кроме того, лучше закрепить его раньше. Таким образом, счетчик увеличивается только один раз за загрузку страницы (the_content можно запускать несколько раз на странице, даже на одной странице. template_redirect только один раз за запрос). Кроме того, если вы храните данные по адресу template_redirect, вы можете использовать обновленное количество просмотров в шаблоне, что дает вашим посетителям еще более точное количество просмотров.

И вам не нужно беспокоиться о таблицах базы данных, пользовательском SQL или любом из них.

+0

Извините, мой последний ответ, я попробую ваш код, tnx для ответа. – user147

+0

Извините, у меня не было времени, теперь понимайте, как это работает с таблицей postmeta, большое спасибо, НО все же, счетчик - это приращение для некоторых сообщений, которые не просматриваются. Например, сообщение с ID 43 является приращением, а сообщение с идентификатором 56 - это приращение, но просматривается только сообщение с ID 43, что может быть проблемой? – user147

+0

Похоже, что когда страница перезагружается, она также увеличивается и счетчик для предыдущего сообщения, а не только текущего сообщения. – user147