按日期限制某些博客帖子?

时间:2012-01-18 作者:tr3online

我正在建立我的朋友博客,他问了我一个很奇怪的要求。他希望最新的五篇博文对未注册的成员可见,但对其他人不可见。我正在使用s2Member处理会员资格。

我最初的尝试只是将博客帖子的数量限制在5篇,并根据是否有人登录以及正确的用户级别隐藏分页按钮。这很好,但人们可以手动添加?page\\u id=x(&U);分页=y以查看更多内容。此外,如果他们知道帖子的名称,也可以查看。

我的想法是添加某种自动分类,如果帖子不在最新的5个帖子中,它们将自动标记为类别“归档”,然后可以使用s2members内置功能对其进行保护。我只是不知道从哪里开始自动标记类别。

如果您能告诉我从哪里开始这一切,我将不胜感激?此外,如果你对如何做类似的事情有更好的想法,我愿意接受建议。

提前感谢!

Tre公司

2 个回复
最合适的回答,由SO网友:5t3ph 整理而成

在单曲开始循环之前。php,添加此代码以检查当前帖子与第五个最新发布日期的对比。如果当前帖子比第五篇更新,则显示该帖子,如果更旧,则显示与登录成员有关的消息。

global $post;
$tmp_post = $post; // Retain current post query

$fifth_post = \'\'; // Set variable

// Query for fifth post date
$args = array( \'numberposts\' => 1, \'offset\'=> 4 );
$fifthPost = get_posts( $args );
foreach( $fifthPost as $fifth ) : setup_postdata($fifth);
$fifth_post = get_the_date("Y-m-d");
endforeach;

// Restore current post
$post = $tmp_post;

$fifth_post = strtotime($fifth_post);
$this_post = date("Y-m-d");
$this_post = strtotime($this_post);

// Post is one of most recent 5, OR user is logged in
if ( $this_post > $fifth_post || is_user_logged_in() ) {
    // Begin regular loop
} else if (!is_user_logged_in() && $this_post < $fifth_post) {
    // Show whatever message to non-loggedin/non-members
}

SO网友:mor7ifer

您可以为前五篇文章生成一个postid数组(任何查询方法都可以),然后使用该数组限制对除它们之外的所有内容的访问,例如:

 if( !in_array( get_the_ID(), $first_five_array ) && !is_user_logged_in() )
     wp_redirect( $location, 307);
我看到的一个主要缺点是,搜索引擎会在为他的内容编制索引时撒尿。。。您可能希望做出某种规定,允许搜索引擎解析不仅仅是前5篇文章。

结束

相关推荐

将wp_INSERT_TERM与Switch_to_Blog一起使用时出现错误

我正在使用WP multisite 3.2运行一个大约80个站点的网络。我在使用switch\\u to\\u blog whith wp\\u insert\\u term时遇到异常情况。为了测试这一点,我禁用了所有插件,并在一个空白页面上进行测试,所以没有其他干扰。以下是示例代码:switch_to_blog(75); wp_insert_term( \'New Term\',\'category\'); restore_current_blog(); 从大多数博客运行时,它