以下是两种简单的方法:
一是使用the_content
-过滤以更新帖子“热度”,或者您可以安排每天运行的事件,并每天更新一次“热度”。
第一种方法:the_content
-筛选将代码转入“可调用”函数:
function update_hotness( $post_id, $echo = false ) {
$time_ago = human_time_diff( get_the_time( \'U\', $post_id ), current_time(\'timestamp\') );
if ( strtotime($time_ago) < strtotime(\'1 day\') ) {
$time_ago = "1";
}
$days_ago = preg_replace( "/[^0-9 ]/", \'\', $time_ago );
$days_ago;
$ratings_score = get_post_meta( $post_id, \'ratings_score\', true );
$hotness = $ratings_score / $days_ago;
// Here you store the "hotness" as post meta
update_post_meta( $post_id, \'hotness\', $hotness );
if ( $echo )
echo $hotness;
return $hotness;
}
因此,您现在可以通过此函数获取并更新帖子“hotness”,只需将帖子id传递给它即可。
接下来创建一个挂钩函数the_content
-每次更新帖子“热门度”的过滤器the_content
被称为:
add_filter( \'the_content\',\'update_hotness_filter\' );
function update_hotness_filter( $content ) {
global $post;
update_hotness( $post->ID );
return $content;
}
第二种方法:安排事件首先,创建一个函数来检查事件是否已安排,然后相应地更新:
add_action( \'wp\', \'hotness_update_activation\' );
function hotness_update_activation() {
if ( ! wp_next_scheduled( \'daily_hotness_update\' ) ) {
wp_schedule_event( current_time( \'timestamp\' ), \'daily\', \'daily_hotness_update\' );
}
}
最后,请确保向事件和每天运行的函数添加一个动作挂钩:
add_action( \'daily_hotness_update\', \'daily_hotness_update_callback\' );
function daily_hotness_update_callback() {
// Here you get a list of posts to update the "hotness" for.
// Then you just call `update_hotness()` for each one ex:
foreach ( $posts as $p ) {
update_hotness( $p->ID );
}
}
就是这样:)
如果你问我,你应该用更简单的方法,这是第一种方法。