it-swarm-pt.tech

Como posso fazer com que os outros modelos sejam compatíveis?

Eu uso o plugin Members para gerenciar permissões no meu site. Para modelos padrão, funciona muito bem - quando o usuário não tem permissão para ver uma página, recebe a seguinte mensagem:

Desculpe, mas você não tem permissão para visualizar este conteúdo.

Como posso ter certeza de que ainda recebo esta mensagem em meus modelos personalizados? Qual tag eu preciso incluir?

EDIT. Fonte do template:

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

Nota: O objetivo deste modelo é atuar como um front end para um script Shell. Qualquer conteúdo no banco de dados é irrelevante, portanto, não há loop. (Apesar de incluir um loop dummy não parece ajudar.)

2
Tom Wright

A mensagem que você citou está sendo gerada pela função members_content_permissions_protect(). Por padrão, é usado como filtro nas funções the_content() e the_excerpt(). Como o seu modelo personalizado não os usa, não há motivos para a execução da função.

Tente algo assim no template:

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

Outra ideia:

$protected = members_content_permissions_protect( false );

if( false !== $protected ) {

    echo $protected;
}
else {

    //template stuff goes here
}
3
Rarst

Você pode usar o sistema userlevels, você pode encontrar mais informações sobre os níveis de funções e recursos aqui:

http://codex.wordpress.org/Roles_and_Capabilities

Veja aqui como os velhos 'papeis' mapeiam no sistema de níveis do usuário:

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

Você pode definir ainda mais em seus modelos se um usuário de determinada função pode visualizar uma página ou não, usando o seguinte:

global $current_user;

get_currentuserinfo();

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

Também tenha em mente:

if ( is_user_logged_in() ) { ... }

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

Usando estes você deve ser capaz de controlar quem pode ver o quê, e em que nível de acesso eles precisam ver

0
Tom J Nowell