假设我有这个网址: www.mywebsite.com/myCPT/post ,在这里,我想检查自创建帖子后3天是否已经过去,以重定向到 www。 mywebsite.com/myCPT/post/stats
在这3天的时间范围内,用户无法访问 www.mywebsite.com/myCPT/post/stats 。
但这需要是动态的,每次创建帖子以检查其网址并添加3天时间,直到可以访问此网址 www.mywebsite.com/myCPT/post/stats
例如,我将有post1,post2,post3等等,每次创建帖子时都会添加3天的时间范围,直到“/ post / stats”可用。
我做了一些研究,我发现了这个:
header('Refresh: 10; URL=http://yoursite.com/page.php');
还为redirection找到了一个wordpress函数:wp_redirect( $location, $status );
获取帖子创建日期的另一个功能:
<?php echo get_the_date(); ?>
和<?php echo get_the_time(); ?>
找到一个可能有帮助的代码段:
if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) {
// DO SOMETHING
}
return $posts;
}
稍后编辑:
"/stats"
的构建如下:
function wpa121567_rewrite_endpoints(){
add_rewrite_endpoint( 'stats', EP_PERMALINK );
}
add_action( 'init', 'wpa121567_rewrite_endpoints' );
还有一些插件可以设置自定义重定向,但没有人提供添加时间范围的功能。
有关如何实现这一目标的任何建议? 谢谢 !
答案 0 :(得分:0)
通过以下方式解决:
要在发布后3天后重定向,请挂钩到template_redirect,检查是否是单个cpt视图,检查日期并与当前时间进行比较,并在需要时重定向。
在3天的时间范围内,检查统计信息是否为查询变量,如果是,则重定向到帖子页。
add_action('template_redirect', 'check_the_date_for_stats');
function check_the_date_for_stats() {
if ( is_singular('myCPT ') ) { // adjust myCPT with your real cpt name
$pl = get_permalink( get_queried_object() ); // permalink
$is_stats = array_key_exists( 'stats', $GLOBALS['wp_query']->query ); // is stats?
$is_cm = array_key_exists( 'comments', $GLOBALS['wp_query']->query ); // is comments?
$ts = mysql2date('Ymd', get_queried_object()->post_date_gmt ); // post day
$gone = ($ts + 3) < gmdate('Ymd'); // more than 3 days gone?
if ( $gone && ( ! $is_stats && ! $is_cm ) ) {
// more than 3 days gone and not is stats => redirect to stats
wp_redirect( trailingslashit($pl) . '/stats' );
exit();
} elseif( ! $gone && ( $is_stats || $is_cm ) ) {
// we are in 3 days frame and trying to access to stats => redirect to post
wp_redirect( $pl );
exit();
}
}
}
注意:代码不是我的,是从HERE
采取的