Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I use the Members plugin to manage permissions on my site. For standard templates, it works great - when the user doesn't have permission to see a page, they get the following message:

Sorry, but you do not have permission to view this content.

How can I make sure I still get this message in my custom templates? Which tag do I need to include?

EDIT. Template source:

<?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(); ?>

Note: The purpose of this template is to act as a front end for a shell script. Any content on the database is irrelevant, so there's no loop. (Though including a dummy loop didn't seem to help.)

share|improve this question
1  
Please add the template tags you use in your custom template to your question. –  hakre Sep 16 '10 at 21:28
    
I've added the whole source for your enjoyment. –  Tom Wright Sep 17 '10 at 11:14

2 Answers 2

Message you quoted is being generated by members_content_permissions_protect() function. By default it is used as a filter on the_content() and the_excerpt() functions. Since your custom template doesn't use these - there is no case for function to run.

Try something like this in template:

$content = 'Content to protect';
echo members_content_permissions_protect( $content );

Another idea:

$protected = members_content_permissions_protect( false );

if( false !== $protected ) {

    echo $protected;
}
else {

    //template stuff goes here
}
share|improve this answer
1  
That's basically why I asked which template tags are in use (or not). I already suspected something like that. –  hakre Sep 17 '10 at 12:47
    
This gives me the right message, but doesn't hide the contents of the template. Is there a conditional form? Or will I have to convert my template to a PHP string? –  Tom Wright Sep 17 '10 at 23:33
    
You will have to convert template to a PHP string, at least for my example. I suggest you ask plugin's developer for recommended usage to protect non-loop content. –  Rarst Sep 18 '10 at 7:41
    
Got another idea for a snippet, see my answer. But suggestion to check with developer still stands. –  Rarst Sep 18 '10 at 8:03

You can use the userlevels system, youc an find more information on roles levels and capabilities here:

http://codex.wordpress.org/Roles_and_Capabilities

See here for how the old 'roles' map onto the user levels system:

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

You can further define in your templates wether a user of a given role can view a page or not using the following:

global $current_user;

get_currentuserinfo();

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

Also bear in mind:

if ( is_user_logged_in() ) { ... }

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

Using these you should be able to control who can see what, and at what level of access they need to see it

share|improve this answer
    
Numerical User Levels tend to out-date. I don't think it's a god advise to use them. Next to that, if the proper template tags are used, you can safe all the hassle to code some logic on your own. –  hakre Sep 17 '10 at 12:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.