Blog

Como fechar alguma parte de conteúdo para usuários não logados

avançado / shortcode

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]

Leave your thought here

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *