Como fechar alguma parte de conteúdo para usuários não logados
Fechar a página inteira é muito fácil. Mas como fechar somente uma parte de conteúdo? Nós vamos criar um shortcode que vai proteger o nosso conteúdo de usuários que não foram logados no WordPress. Vamos ver o código que precisamos colocar no arquivo functions.php
function logged_in_user_content( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) {
return $content;
}
return 'Este conteúdo é disponível apenas para usuários logados';
}
add_shortcode( 'ismember', 'logged_in_user_content' );
Agora como podemos usar este shortcode na página?
[ismember]
Aqui o conteúdo disponível para usuários logados
[/ismember]
É muito simples.
Agora vamos colocar restrição no conteúdo dependendo de capacidades de usuário. Essas capacidades, aliás depende do role. Vamos deixar disponível o conteúdo para usuários quem podem ler o conteúdo.
function content_by_user_cap( $attr, $content = null ) {
$defaults = array(
'capability' => 'read'
);
extract( shortcode_atts( $defaults, $attr ) );
if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() ) {
return $content;
}
return 'Este conteúdo não está disponível para você';
}
add_shortcode( 'acesso', 'content_by_user_cap' );
O nosso shortcode tem parâmetros que de padrão tem valor read. Mas podemos adicionar outros habilidades de usuário. Como? Vamos ver o exemplo
[acesso capability="edit_posts"]
Aqui é o conteúdo disponível para usuários que tem direito de editar os posts
[/acesso]