wake-up-neo.com

Finden Sie heraus, ob der angemeldete Benutzer kein Abonnent ist

Gibt es ein bedingtes Tag, mit dem ich den bestimmten Inhalt nur dann anzeigen kann, wenn der Benutzer KEIN Abonnent ist?

8
Nasir Zia
<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
    echo 'User is a not Subscriber';
else
    echo 'User is a Subscriber';
?>
9
Brady

Noch einfacher als @Brady gezeigt hat, ist die Verwendung von current_user_can :

if ( current_user_can( 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again!";

MU

Es gibt auch eine Entsprechung für MU-Installationen mit dem Namen current_user_can_for_blog :

global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again on this blog!";

Hinter dem Vorhang

Wenn Sie sich die Quelle der Funktionen für Single oder MU-Installationen ansehen, werden Sie feststellen, dass sich beide im Wesentlichen auf wp_get_current_user() verlassen und dann nach has_cap suchen. Wenn Sie nun sehen möchten, woher die Kappe kommt, dann kommt WP_User class/object ins Spiel.

Andere Mitglieder dieser Gruppe

Dann gibt es noch author_can( $GLOBALS['post'], 'capability' );. Alle diese Funktionen befinden sich in ~/wp-includes/capabilities direkt untereinander.

Wann was verwenden?

Wo ist nun der Unterschied zwischen current_user_can(_FOR_BLOG) und user_can ?

  • user_can() ist die neuere (seit 3.1), benötigt aber den Benutzer als Objekt. Sie können es also in Fällen verwenden, in denen Sie nicht auf den aktuellen Benutzer, sondern auf einige Benutzer abzielen möchten.
  • current_user_can_*() ist offensichtlich.
  • Mit author_can() können Sie die Funktionen anhand eines Beitragsobjekts überprüfen. Dieses Objekt ist nur für Beiträge verfügbar, die sich bereits in der DB befinden. Dies dient hauptsächlich dazu, den Zugriff auf bestimmte Post-Features zuzulassen/zu verweigern.
15
kaiser