您可以始终使用get\\u posts()返回随机帖子,但每次加载页面时都会更改。所以,给你一个主意。
在插件文件中,设置wp_cron 钩
<?php
/* Your plugin header goes here */
register_activation_hook( __FILE__, \'wpse24234_activation\' );
function wpseo24234_activation()
{
wp_schedule_event( time(), \'daily\', \'wpse24234_daily\' );
}
然后将一个函数挂接到cron操作中,该操作获取一个随机帖子(通过get\\u posts())并将其存储在
transient 每24小时到期一次。
add_action( \'wpse24234_daily\', \'wpse24234_daily_cb\' );
function wpse24234_daily_cb()
{
$posts = get_posts( array( \'cat\' => YOUR_CATEGORY_ID_HERE, \'numberposts\' => 1, \'orderby\' => \'rand\' ) );
if( ! empty( $posts ) )
set_transient( \'cat_1_post\', $posts[0]->ID, 60 * 60 * 12 );
}
然后在前端,您可以使用get transient获取post ID,并使用该ID获取您想要的任何其他内容。
<?php
/* Somewhere on your site */
$id = get_transient( \'cat_1_post\' );
$link = \'<a href="\' . get_permalink( $id ) . \'">\' . get_the_title( $id ) . \'</a>\';
?>
Todays random post from Category 1 is <?php echo $link; ?>
当然,你必须做一些测试,看看这是否对你有用。