Support » Allgemeine Fragen » Buttons mit Berechtigungen versehen

  • Hallo,

    gibt es eine Möglichkeit auf einen Button eine Gruppenberechtigung zu legen,
    so dass dieser nur betätigt werden kann, wenn man in dieser Gruppe ist?

    Viele Grüße
    Andre

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Moderator Bego Mario Garde

    (@pixolin)

    Klar geht das.

    Hier hab ich dir mal rasch einen Shortcode aufgesetzt, der Mitgliedern der Benutzerrolle „author“ einen Button mit einem Link zum WordPress-Support (sehr hilfreich! 😉 ) und allen anderen einen Button ohne Funktion und ohne Link anzeigt. Auch die Beschriftung ändert sich.

    add_shortcode( 'groupbutton', 'groupbutton_shortcode' );
    function groupbutton_shortcode() {
    	$link = '#';
    	$text = 'Nur für Autoren';
    	$user = wp_get_current_user();
    	if ( in_array( 'author', (array) $user->roles ) ) {
        	  $link = 'https://de.wordpress.org/support/';
    	  $text = 'WordPress Support';
    	}
    	return '<a href="' . $link . '" class="groupbutton" aria-haspopup="menu">' . $text . '</a>';
    }
    
    add_action( 'wp_head', 'groupbutton_style' );
    function groupbutton_style() { ?>
    	<style>
    		a.groupbutton {
        		padding: 7px;
      			background: red;
      			font-family: Arial, Helvetica, sans-serif;
      			font-weight: bold;
      			color: white;
      			border: 1px solid darkred;
      			border-radius: 10px;
    	}
    	</style>
    <?php }

    Den Code kannst du entweder in der functions.php eines Child-Theme anhängen oder mit dem Plugin Code Snippets hinzufügen. Den Button fügst du dann mit dem Shortcode-Block ein, der Shortcode lautet [groupbutton].

    Die Funktion groupbutton_style() fügt ein paar CSS-Regeln hinzu, die du an die Gestaltung deiner Website anpassen kannst.

    Es wäre auch möglich, den Button nur anzuzeigen, wenn der Benutzer einer bestimmten Benutzerrolle angehört. Dazu kannst du das if-Statement in der Funktion groupbutton_shortcode() verwenden.

    Thread-Ersteller hertmond

    (@hertmond)

    Das mit dem Groupbutton klappt prima,
    könnte man auch mehrer Groupbutton auf einer Seite anlegen,
    die dann auf verschiedene Seiten verweisen?

    z.B [groupbutton1] – [groupbutton2] – [groupbutton3]

    Viele Grüße
    André

    • Diese Antwort wurde geändert vor 10 Monaten von hertmond.
    Moderator Bego Mario Garde

    (@pixolin)

    Klar, du kannst ja einen Shortcode mit Attributen anlegen.

    Wie das geht, habe ich hier beschrieben:
    MFG mit freundlichen Grüßen

    Thread-Ersteller hertmond

    (@hertmond)

    Wäre das dann so richtig?

    add_shortcode( 'Karfunkel', 'karfunkel_shortcode' );
    function karfunkel_shortcode() {
    	$link = '#';
    	$text = 'Karfunkel';
    	$user = wp_get_current_user();
    	if ( in_array( 'Karfunkel', (array) $user->roles ) ) {
        	  $link = 'https://www.karfunkel.de/karfunkel/';
    	  $text = 'Karfunkel ePaper';
    	}
    	return '<a href="' . $link . '">' . $text . '</a>';
    }
    
    add_action( 'wp_head', 'karfunkel_style' );
    function karfunkel_style() { ?>
    	<style>
    		a.karfunkel {
        		padding: 7px;
      			background: red;
      			font-family: Arial, Helvetica, sans-serif;
      			font-weight: bold;
      			color: white;
      			border: 1px solid darkred;
      			border-radius: 10px;
    	}
    	</style>
    <?php }


    Moderationshinweis: Sei bitte demnächst so nett und formatiere Code, wenn du die Antwort schreibst. Das erspart uns, den Text wieder umzuwandeln und nachträglich zu formatieren.

    • Diese Antwort wurde geändert vor 9 Monaten, 4 Wochen von hertmond.
    • Diese Antwort wurde geändert vor 9 Monaten, 4 Wochen von Bego Mario Garde.
    • Diese Antwort wurde geändert vor 9 Monaten, 4 Wochen von Bego Mario Garde. Grund: Code formatiert
    Thread-Ersteller hertmond

    (@hertmond)

    Mach ich, sorry.

    Ich weiß nicht, was du jetzt mit diesem Code erreichen möchtest.

    Wenn ich dich richtig verstehe, möchtest du mehrere Buttons einfügen:

    • Jeder Button ist für eine andere Benutzergruppe.
      Z.B. Button A für Abonennten, Button B für Mitarbeiter, Button C für Redakteure (oder eine beliebige Benutzerrolle, die du mit einem Plugin erstellt hast).
    • Nur Webseitenbesucher mit der richtigen Benutzergruppe sollen für den Button einen Link hinterlegt bekommen:
      Wenn ein Abonnent die Webseite aufruft ist Button A für Abonennten verlinkt und zeigt einen von dir festgelegten Text an. Alle anderen Besucher (auch solche mit Benutzerrolle)
      sehen einen Button mit Beschriftung „nicht berechtigt“,
      die URL ist entfernt,
      der Button ist inaktiv, wird aber angezeigt.
      Für den Abonennten sind alle anderen Buttons mit „nicht belegt“ beschriftet, die URL ist entfernt und der Button inaktiv.
    • das soll über einen Shortcode realisiert werden, bei dem du als Parameter die Benutzergruppe, den Text und den Link angibst, z.B.
      [groupbutton gruppe="subscriber" text="Inhalt für Abonennten" url="https://de.wordpress.org/support"]

    Normalerweise ist es nicht Sinn des Forums, dass wir dir fertigen Code liefern (und schon gar nicht, wenn anschließend weitere Wünsche kommen) – wir sind keine kostenlosen Dienstleister. Ich mache hier eine Ausnahme.

    <?php
    /*
     * Shortccode [groupbutton gruppe="…" text="…" url="…"]
     * $werte['gruppe'] = Benutzergruppe
     * $werte['text']   = Beschriftung des Button
     * $werte['url']    = Link des Button
     */
    
    add_shortcode( 'groupbutton', 'groupbutton_shortcode' );
    function groupbutton_shortcode( $atts ) {
    	$a = shortcode_atts( array(
    		'gruppe' => '',
    		'text'   => '',
    		'url'    => '',
    	), $atts );
    	
    	$user   = wp_get_current_user();
    	$gruppe = esc_attr( $a['gruppe']);
    	
    	if ( in_array( $gruppe, (array) $user->roles ) ) { 
       		$url = esc_url( $a['url'] );
    		$text = esc_attr($a['text']);
    	} else {
    		$url = '#';
    		$text = 'Nicht berechtigt';
    	}
    		
        return '<a href="' . $url . '" class="groupbutton" aria-haspopup="menu">' . $text . '</a>';
    }
    
    add_action( 'wp_head', 'groupbutton_style' );
    function groupbutton_style() { ?>
    	<style>
    		a.groupbutton {
        		padding: 7px;
      			background: red;
      			font-family: Arial, Helvetica, sans-serif;
      			font-weight: bold;
      			color: white;
      			border: 1px solid darkred;
      			border-radius: 10px;
    	}
    	</style>
    <?php }

    Achte beim Prüfen des Code darauf, dass [groupbutton gruppe="subscriber" text="Inhalt für Abonennten" url="https://de.wordpress.org/support"]
    für alle Benutzer „nicht berechtigt“ ausgibt, die nicht Abonnent sind.

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Das Thema „Buttons mit Berechtigungen versehen“ ist für neue Antworten geschlossen.