我还没来得及测试这个,但你可以用the_content
过滤器挂钩。这样,您就不必将此代码插入archive.php
, category.php
, tag.php
, author.php
以及任何其他存档文件,具体取决于主题的结构。
在您的主题中functions.php
文件添加以下内容:
function my_filter( $content ) {
$categories = array(
\'news\',
\'opinions\',
\'sports\',
\'other\',
);
if ( in_category( $categories ) ) {
if ( is_logged_in() ) {
return $content;
} else {
$content = \'<p>Sorry, this post is only available to members</p>\';
return $content;
}
} else {
return $content;
}
}
add_filter( \'the_content\', \'my_filter\' );
因此,这可以做到的是在从数据库中提取帖子和显示帖子之间拦截帖子的内容。然后,它将检查该帖子是否有
$categories
数组(注意:最好在数组中使用类别slug)。然后,它将查看用户是否已登录。
如果是,则会显示帖子。如果没有,则会将内容设置为消息,然后将其发送回帖子内容的位置。
如果用户已登录,或者帖子不在数组中的任何类别中,那么它将正常返回帖子。
注意:如果您使用the_excerpt()
在您的主题中,而不是the_content()
, 然后只需在add_filter()
致电至\'the_excerpt\'
它应该会起作用。