2016-08-09 2 views
1

Как отобразить большинство прочитанных сообщений за последнюю неделю?WordPress - Отображение прочитанных сообщений за последнюю неделю

У меня есть следующий код для записи каждого удара по сообщениям, поэтому я бы знал, сколько людей прочитало сообщение.

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 View"; 
    } 
    return $count.' Views'; 
} 

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


// Remove issues with prefetching adding extra views 
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); 
/** 
* Add a new column in the wp-admin posts list 
* 
* @param $defaults 
* 
* @return mixed 
*/ 

function subh_posts_column_views($defaults) { 
    $defaults['post_views'] = __('Views'); 
    return $defaults; 
} 

/** 
* Display the number of views for each posts 
* 
* @param $column_name 
* @param $id 
* 
* @return void simply echo out the number of views 
*/ 

function subh_posts_custom_column_views($column_name, $id) { 
    if ($column_name === 'post_views') { 
     echo getPostViews(get_the_ID()); 
    } 
} 

add_filter('manage_posts_columns', 'subh_posts_column_views'); 
add_action('manage_posts_custom_column', 'subh_posts_custom_column_views', 5, 2); 

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

$options = array(
     'post_type' => 'post', 
     'post_status' => 'publish', 
     'posts_per_page' => $limit, 
     'ignore_sticky_posts' => true, 
     /* 'orderby' => 'meta_value_num', */ 
     'orderby' => 'rand', 
     'order' => 'desc', 
     'meta_key' => 'post_views_count' 
    ); 

ответ

1

Вы можете добавить 'last_view_date' мета-данные для каждой должности в wp_postmeta таблицы, изменяя немного ваших 2 первых функций, а также создание условной функции, которая возвращает истину для сообщений, которые были читать последний неделю (за последние 7 дней).

Вот ваши 2 первых функции, которые я настроил немного:

function getPostViews($postID){ 
    $count_key = 'post_views_count'; 
    $date_key = 'last_view_date'; 
    $today_date = date("Y-m-d"); 
    $count = get_post_meta($postID, $count_key, true); 
    if($count==''){ 
     // Note: update_post_meta() create the data if not exist 
     update_post_meta($postID, $count_key, '0'); 

     // Setting the "view date" for the first time 
     update_post_meta($postID, $date_key, $today_date); 

     return '0 View'; 
    } 
    return $count.' Views'; 
} 

function setPostViews($postID) { 
    $count_key = 'post_views_count'; 
    $date_key = 'last_view_date'; 
    $today_date = date("Y-m-d"); 
    $count = get_post_meta($postID, $count_key, true); 
    if($count==''){ 
     $count = 0; 
     // Note: update_post_meta() create the data if not exist 
     update_post_meta($postID, $count_key, '0'); 

     // Setting the "view date" for the first time 
     update_post_meta($postID, $date_key, $today_date); 

    }else{ 
     $count++; 
     update_post_meta($postID, $count_key, $count); 

     // Updating the "view date" 
     update_post_meta($postID, $date_key, $today_date); 
    } 
} 

Это условная функция кода для фильтрации на прошлой неделе просмотренных сообщений:

// Conditional function that return true, whem a post have been read at least once in last week. 
function is_week_viewed($postID) { 
    $now = time(); 
    $date_key = 'last_view_date'; 
    $view_date = get_post_meta($postID, $date_key, true); 
    $viewdate = strtotime($view_date); 
    $datediff = $now - $viewdate; 
    $days = floor($datediff/(60*60*24)); 
    $count = get_post_meta($postID, $count_key, true); 
    if ($count > '0' && $days < 8) { 
     return true; 
    } 
} 

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

Затем с is_week_viewed() условная функция вы можете отфильтровать результаты поиска, чтобы получить только сообщения на прошлой неделе.

Reference - условная функция основана на этой старой теме:
Finding the number of days between two dates

+0

Большое спасибо от меня! Он отлично работает! Прежде чем я отметю, он ответил, что хочу проверить что-то на сайте. –

Смежные вопросы