在 Wordpress 中一段时间后重置 post 元
Reset post meta after time in Wordpress
所以我的 Wordpress 网站有这个功能,它基本上只计算每次点击并循环显示最受欢迎的点击。
我的问题是元字段不会在一段时间后重置或减少。所以它会显示旧帖子而不是新帖子。我对 PHP 了解不多,所以如果有人能帮助我,我将不胜感激!
这是我当前的 PHP 功能:
function shapeSpace_popular_posts($post_id) {
$count_key = 'popular_posts';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
add_action('wp_ajax_track_clicks', 'track_clicks');
add_action('wp_ajax_nopriv_track_clicks', 'track_clicks');
function track_clicks(){
$post_id = $_POST['post_id'];
shapeSpace_popular_posts($post_id);
echo 'Success';
wp_die();
}
使用 wp_schedule_event() 函数 运行 将所有 post 元数据设置为 0 的函数:
https://codex.wordpress.org/Function_Reference/wp_schedule_event
并添加自定义重复间隔:
function add_cron_recurrence_interval( $schedules ) {
$schedules['every_three_minutes'] = array(
'interval' => 180,
'display' => __( 'Every 3 Minutes', 'textdomain' )
);
return $schedules;
}
add_filter( 'cron_schedules', 'add_cron_recurrence_interval' );
要删除所有 post 元数据,请使用
<?php delete_post_meta_by_key( 'popular_posts' ); ?>
https://codex.wordpress.org/Function_Reference/delete_post_meta
此外,我建议您进行消毒
$_POST['post_id']
与
intval($_POST['post_id'])
https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data
所以我的 Wordpress 网站有这个功能,它基本上只计算每次点击并循环显示最受欢迎的点击。 我的问题是元字段不会在一段时间后重置或减少。所以它会显示旧帖子而不是新帖子。我对 PHP 了解不多,所以如果有人能帮助我,我将不胜感激!
这是我当前的 PHP 功能:
function shapeSpace_popular_posts($post_id) {
$count_key = 'popular_posts';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
add_action('wp_ajax_track_clicks', 'track_clicks');
add_action('wp_ajax_nopriv_track_clicks', 'track_clicks');
function track_clicks(){
$post_id = $_POST['post_id'];
shapeSpace_popular_posts($post_id);
echo 'Success';
wp_die();
}
使用 wp_schedule_event() 函数 运行 将所有 post 元数据设置为 0 的函数:
https://codex.wordpress.org/Function_Reference/wp_schedule_event
并添加自定义重复间隔:
function add_cron_recurrence_interval( $schedules ) {
$schedules['every_three_minutes'] = array(
'interval' => 180,
'display' => __( 'Every 3 Minutes', 'textdomain' )
);
return $schedules;
}
add_filter( 'cron_schedules', 'add_cron_recurrence_interval' );
要删除所有 post 元数据,请使用
<?php delete_post_meta_by_key( 'popular_posts' ); ?>
https://codex.wordpress.org/Function_Reference/delete_post_meta
此外,我建议您进行消毒
$_POST['post_id']
与
intval($_POST['post_id'])
https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data