如何使我的自定义模板尊重权限?

时间:2010-09-16 作者:Tom Wright

我使用Members插件来管理我网站上的权限。对于标准模板,它非常有效-当用户没有查看页面的权限时,他们会收到以下消息:

抱歉,您没有查看此内容的权限。

如何确保在自定义模板中仍能收到此消息?我需要包括哪个标签?

EDIT. 模板来源:

<?php
/*
Template Name: Stats
*/
?>


<?php
get_header();
?>

<div id="main">

<div id="contentwrapper">
  <div class="topPost">
    <h2 class="topTitle"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
    <div class="topContent">
      <p>Listeners are counted every minute. The green line is the <b>maximum</b> during any given time period. The red area is the <b>average</b> number of listeners during the same time period.</p>
      <h3>Listeners over the last hour</h3>
      <img class="alignnone" title="Listeners over the last hour" src="<?php echo get_graph(60,60); ?>" alt="" width="481" height="149" />
      <hr/>
      <h3>Listeners over the last day</h3>
      <img class="alignnone" title="Listeners over the last day" src="<?php echo get_graph(3600,24); ?>" alt="" width="481" height="149" />
      <hr/>
      <h3>Listeners over the last week</h3>
      <img class="alignnone" title="Listeners over the last week" src="<?php echo get_graph(86400,7); ?>" alt="" width="481" height="149" />
    </div>
    <div class="cleared"></div>
  <div class="cleared"></div>
  </div> <!-- Closes topPost -->
</div> <!-- Closes contentwrapper-->

<?php get_sidebar(); ?>
<div class="cleared"></div>

</div><!-- Closes Main -->


<?php get_footer(); ?>
注意:此模板的目的是充当shell脚本的前端。数据库中的任何内容都是无关的,因此没有循环。(虽然包括一个虚拟循环似乎没有帮助。)

2 个回复
SO网友:Rarst

您引用的消息是由生成的members_content_permissions_protect() 作用默认情况下,它用作the_content()the_excerpt() 功能。由于您的自定义模板不使用这些,所以没有理由运行函数。

在模板中尝试以下操作:

$content = \'Content to protect\';
echo members_content_permissions_protect( $content );
另一个想法:

$protected = members_content_permissions_protect( false );

if( false !== $protected ) {

    echo $protected;
}
else {

    //template stuff goes here
}

SO网友:Tom J Nowell

您可以使用userlevels系统,您可以在此处找到有关角色级别和功能的更多信息:

http://codex.wordpress.org/Roles_and_Capabilities

有关旧“角色”如何映射到用户级别系统,请参见此处:

http://codex.wordpress.org/Roles_and_Capabilities#User_Levels

您可以在模板中进一步定义给定角色的用户是否可以查看页面或不使用以下内容:

global $current_user;

get_currentuserinfo();

if ($current_user->user_level < 8) {
    // stuff that is only visible to users lower than level 8
}
还要记住:

if ( is_user_logged_in() ) { ... }

http://codex.wordpress.org/Function_Reference/is_user_logged_in

使用这些,您应该能够控制谁可以看到什么,以及他们需要在什么访问级别上看到它

结束

相关推荐