对于未登录的用户,我如何在3天内延迟阅读照片?

时间:2017-10-14 作者:donald

if( ! is_user_logged_in() && ( in_category( \'test2\' ) || in_category( \'test1\' ) ) && ( current_time( \'Y-m-d\' ) <= get_the_date( \'Y-m-d\', strtotime(\'+3 days\') ) ) ){ 
    echo \'sorry\';
} else { 
    the_content(); 
}
我的代码在单一。php循环。但不起作用。我能帮助任何人吗?

2 个回复
SO网友:Johansson

您不想向已注销的用户显示帖子的内容,因此需要先进行检查。如果用户已登录,请检查类别及其注册时间:

if( is_user_logged_in() ) {
    if( ( in_category( \'test2\' ) || in_category( \'test1\' ) ) && ( current_time( \'Y-m-d\' ) <= get_the_date( \'Y-m-d\' ) + strtotime(\'+3 days\') ) ){
        echo "sorry";
    } else {
        the_content();
    }
} else {
    echo "sorry";
}

SO网友:Jacob Peattie

您正在使用get_the_date() 错误的该函数以给定格式获取帖子的日期,第二个参数是帖子获取日期的帖子ID。不是时候了。

最简单的方法就是使用时间戳。因此,您可以使用DAY_IN_SECONDS WordPress提供的常量:

if ( 
    ! is_user_logged_in() 
    && in_category( array( \'test2\', \'test1\' ) )
    && current_time( \'U\' ) <= get_the_date( \'U\' ) + ( 3 * DAY_IN_SECONDS )
) {
    echo \'Sorry\';
} else {
        the_content();
    }
}
关键在于:

current_time( \'U\' ) <= get_the_date( \'U\' ) + ( 3 * DAY_IN_SECONDS )
这应该可以避免不同时区之间的问题current_time()strtotime().

PS:我还更改了你的倍数in_category() 使用数组调用到单个调用中。

结束

相关推荐

仅在生产服务器上使用GET_POSTS/orderby时,POST未按正确的字母顺序或ID顺序显示

我有一个页面,列出了一些自定义帖子,但它们没有按正确的字母顺序显示。作为测试,我还尝试按ID的顺序列出它们,但它们的顺序也不正确。当它被列为ID时,它们看起来好像分成了3组在4000年代的高位数字,低于200,然后是3000,这很奇怪。它在我的本地服务器上运行良好。在Wordpress后端也可以进行订购。当我在1&;上将站点移动到新的托管包时,问题似乎发生了;1、以前是否有服务器特定的订购问题?我制作了两个测试页面,显示了标题和ID(顺序错误)ID顺序的简单列表:http://www.realpat