популярные сообщения для нестандартного типа сообщений WordPress - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу отобразить популярное сообщение для пользовательского типа сообщения, и мой код работает только для сообщения. не для пользовательского типа сообщения. это мой код в функции. 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);

на одной странице пользовательского типа записи, я использовал это в моей l oop

 wpb_set_post_views(get_the_ID());

и на главной странице где я хочу показать популярный пост пользовательского типа поста, я использовал это

    <?php
$args = array(
  'post_type' => 'project',
  'meta_key' => 'wpb_post_views_count',
  'orderby' => 'meta_value_num',
  'order' => 'DESC'
);
$query = new WP_Query( $args );

 while ($query->have_posts()): $query->the_post();


       the_title();
 endwhile
?>

Я буду благодарен вам за эту доброту

1 Ответ

0 голосов
/ 21 апреля 2020

Я думаю, что в вашем коде отсутствует несколько полезных вещей, поэтому, если вы согласны, я бы немного изменил ваш код.

Вам может понадобиться функция для отображения представлений

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;
}

В вашей функции для подсчета просмотров вы можете установить повара ie, так что подсчитываются только просмотры, если это не тот же пользователь.

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{
        if(!isset($_COOKIE['wp_visited_ip_'.$postID])) { // check if cookie exist
            $count++; // increase counter
        }
        update_post_meta($postID, $count_key, $count);
        // Get IP address
        $visit_ip_addr = $_SERVER['REMOTE_ADDR'];
        // Set the cookie
        setcookie('wp_visited_ip_'.$postID, $visit_ip_addr, time()+ (60 * 1)); // time interval
    }
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

В одиночном. php вашего сообщения вы можете вызвать функцию в l oop.

setPostViews(get_the_ID()); // count post views

Запрос на отображение 5 самых просматриваемых сообщений может выглядеть следующим образом:

        $args_fav = array(
            'post_type'         => 'project',
            'order'             => 'DESC',
            'meta_key'          => 'post_views_count',
            'orderby'           => 'meta_value_num',
            'post_status'       => array( 'publish' ),
            'posts_per_page'    => 5
        );

        $loop_fav = new WP_Query( $args_fav );

Этот код должен будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...