WordPress - 显示上周阅读最多的帖子
WordPress - Displaying most read posts in the last week
如何显示上周阅读最多的post?
我有以下代码来记录 post 的每次点击,所以我会知道有多少人阅读了 post。
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 );
如何设置以下内容以显示上周阅读最多的post?
$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'
);
您可以为 wp_postmeta
中的每个 post 添加一个 'last_view_date'
元数据table,稍微改变一下您的 2 个第一个函数,并创建一个条件函数,该函数 returns 对于上周(过去 7 天)阅读的 post 为真。
这是我稍微自定义的第一个 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);
}
}
这是条件函数代码,用来过滤上周浏览过的posts:
// 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;
}
}
有了这个 material,您可以设法在上周针对您的搜索查询显示最多阅读 post…
Then with is_week_viewed()
conditional function you can filter now your search results to get only last week posts.
参考 - 条件函数基于这个旧线程:
Finding the number of days between two dates
如何显示上周阅读最多的post?
我有以下代码来记录 post 的每次点击,所以我会知道有多少人阅读了 post。
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 );
如何设置以下内容以显示上周阅读最多的post?
$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'
);
您可以为 wp_postmeta
中的每个 post 添加一个 'last_view_date'
元数据table,稍微改变一下您的 2 个第一个函数,并创建一个条件函数,该函数 returns 对于上周(过去 7 天)阅读的 post 为真。
这是我稍微自定义的第一个 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);
}
}
这是条件函数代码,用来过滤上周浏览过的posts:
// 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;
}
}
有了这个 material,您可以设法在上周针对您的搜索查询显示最多阅读 post…
Then with
is_week_viewed()
conditional function you can filter now your search results to get only last week posts.
参考 - 条件函数基于这个旧线程:
Finding the number of days between two dates