Den skjulte side

Jeg deltager i forskellige danske og udenlandske debatsider om WordPress og udvikling, og det sker ikke sjældent at jeg besvarer spørgsmålet : Hvordan skjuler jeg indhold for ikke indloggede brugere. Der skal ikke ret meget til faktisk.

Man skal naturligvis vide om brugeren der er på siden er logget ind eller ej, der bruger jeg WordPress indbyggede is_user_logged_in() funktionen returnerer false hvis brugeren ikke er logget ind, så den er handy.

Og så bygger jeg en shortcode, som altså også kan tage specifikke hensyn til rolle (abbonent, redaktør… administrator).

 

add_shortcode( 'logget_ind', 'check_logget_ind_shortcode' );

function check_logget_ind_shortcode( $atts, $content = null ) {
/* check om brugeren er logget ind, om shortkoden har indhold og at det ikke er et feed */
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) {
global $current_user; /* $current_user = wp_get_current_user() som er erklæret andet sted i koden*/

$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);

/* i dette system er standard brugeren "subscriber" og vi ønsker at både subscriber og admin kan se indholdet */
if ($user_role == 'subscriber' || $user_role == 'administrator') {
return do_shortcode($content); /* vis indhold */
}
return 'Du skal være logget ind for at kunne se denne side.';
}
}