如果x天通过wordpress,则重定向到网址

时间:2013-11-27 15:45:00

标签: php wordpress redirect timer

假设我有这个网址: 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' );

还有一些插件可以设置自定义重定向,但没有人提供添加时间范围的功能。

有关如何实现这一目标的任何建议? 谢谢 !

1 个答案:

答案 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

采取的