Wordpress создание плагина для наиболее часто просматриваемых сообщений? - PullRequest
1 голос
/ 18 июня 2010

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

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.

1 Ответ

1 голос
/ 18 июня 2010

Вот как это сделать с таблицей 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 или что-то из этого.

...