2010-08-14 37 views
0

我最近为我的Wordpress网站创建了这段代码。它使得未注册的用户无法看到最多15天的最新帖子,除非他们注册。它的工作原理,但我需要它只限制在我的Wordpress安装一个特定的类别,而不是所有的(即我需要它来限制这个类别,但不是我的博客文章)。在此代码中添加仅更改给定类别的功能?

任何人都可以告诉我在哪里和什么是需要这样做的代码功能?谢谢。

add_filter('posts_where', '_custom_s2member_archive_filter'); 
function _custom_s2member_archive_filter($where) /* Require membership to view latest content. */ 
    { 
     if(!is_admin() && (is_archive() || is_home()) && !current_user_can("access_s2member_level1")) 
      { 
       $where .= " AND post_date <= '".date ("Y-m-d", strtotime ("-15 days"))."'"; /* Back-date freeloaders. */ 
      } 
     return $where; 
    } 
add_filter('template_redirect', '_custom_s2member_single_filter'); 
function _custom_s2member_single_filter() /* Require membership to view latest content. */ 
    { 
     global $post; /* Need this for date comparison. */ 
     if(!is_admin() && is_single() && !current_user_can("access_s2member_level1")) 
      { 
       if(strtotime($post->post_date) > strtotime("-15 days")) 
        { 
         header("Location: ".S2MEMBER_MEMBERSHIP_OPTIONS_PAGE_URL); 
         exit(); 
        } 
      } 
    } 
+0

为您编写代码的人不会更改它? :) – markratledge 2010-08-14 20:42:08

+0

所以你想限制一个类别,但保持其他职位不受限制?最简单的方法是在查询后进行筛选,但这会给出奇怪的归档(并不总是每页的帖子数量相同)。如果他们在档案中看到“这里有一篇文章,但在注册之前无法看到它”,这可以吗? – 2010-08-14 20:51:55

+0

多一点背景:这一切都通过一个名为Comicpress(comicpress.org)的主题运行。基本上我想要漫画类别被过滤,但不是博客文章。我希望这可能会让事情变得更加清晰。 :) @songdogtech我似乎无法激励编写代码的人来修复这部分,因为我已经愚蠢地支付了他们。 – 2010-08-14 21:06:12

回答

0

首先确定问题类别的ID是什么。您可以通过转到管理员侧栏中的“帖子” - >“类别”,然后单击您要限制的类别。您所导向的新页面的URL将以tag_ID = [某个数字]结尾。 [某个数字]是类别ID。

然后使用WordPress的conditional tags写如果声明像
if(is_category('[some number]'))
{
Put the code you already have for restricting the posts here
}

当然,我还没有测试此我自己,但让我知道它是如何工作!