如果已过x天,请重定向至URL

时间:2013-11-27 作者:agis

假设我有以下URL:www.example.com/myCPT/post, 在这里,我想检查一下,自从创建要重定向到的帖子以来,是否已经过了3天www.example.com/myCPT/post/stats.

在这3天的时间范围内,用户应该无法访问www.example.com/myCPT/post/stats.

但这需要是动态的,每次创建一个帖子来检查它的URL,并添加一个3天的时间,直到这个URL可以访问为止www.example.com/myCPT/post/stats

例如,我将有post1、post2、post3等等,每次创建帖子都会添加一个3天的时间框架,直到"/post/stats" 将可用。

我也需要同样的"/post/comments" : 此地址应在3天后可用,如果之前有人尝试访问,则应重定向到post url:"/post"

我做了一些研究,发现:

  • 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""/comments" 端点的构建方式如下:

    function wpa121567_rewrite_endpoints(){
    
      add_rewrite_endpoint( \'stats\', EP_PERMALINK );
    
    }
    
    add_action( \'init\', \'wpa121567_rewrite_endpoints\' );
    
    对如何实现这一目标有何建议?

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

要在发布3天后重定向,请连接到template_redirect, 检查是否是单一cpt视图,检查日期并与当前时间进行比较,如果需要,则重定向。

在3天的时间范围内,检查stats是否是查询变量,如果是,则重定向到post页面。

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();
    }
  }
}

结束

相关推荐

WP_Query in functions.php

我有一些代码要转换成函数。它工作得很好,直到我将其包装到所述函数中: $args = array( \'posts_per_page\' => -1, \'post_type\' => \'asset\', \'category_name\' => $cat ); $cat_query = new WP_Query( $args );