Support » Allgemeine Fragen » User weiterleiten bei spezieller User Rolle

  • Hallo,

    Ich möchte den User auf eine andere Seite leiten als der Link/die Url angibt, sofern der User eine spezielle Rolle/spezielle Rechte hat. Bei allen anderen User Rollen kann der User ganz normal zur entsprechenden URL geleitet werden.

    Wie kann ich das umsetzen? Gibt es ein oder zwei passende Plugins dazu?

    Vielen Dank für deinen Support

    Grüsse
    Philipp

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Deine Frage ist etwas ungenau gestellt: Was ist denn „der Link/die Url“ und wohin soll umgeleitet werden?

    • Geht es um die Weiterleitung nach dem Login – dafür gibt es bereits einige Plugins.
    • Geht es um das Navigationsmenü? Dazu habe ich in deiner anderen Frage schon Vorschläge gemacht.
    • Geht es um Links in Beiträgen und Seiten? Wenn ja, geht es um individuelle Links oder eine allgemeine Weiterleitung? Kommt der Link nur einmal vor oder öfters?

    Ein fertiges Plugin ist mir nicht bekannt, aber nehmen wir mal an, du möchtest an verschiedenen Stellen Links einfügen, die je nach Benutzerrolle zu unterschiedlichen Seiten verlinken. In diesem Fall könntest du einen Shortcode verwenden. Dazu installierst du das Plugins Code Snippets und fügst folgendes Code-Snippet hinzu:

    function shortcode_rolesurl( $atts, $content = null ) {
    	$a = shortcode_atts( array(
    		'url'  => '',
    		'subscriber' => '',
    		'contributor' => '',
    		'author' => '',
    		'editor' => '',
    		'admin' => '',
    	), $atts );
    
    	$url = $a['url'];
    
    	if ( current_user_can( 'subscriber' ) ) {
    		$url = $a['subscriber'];
    	}
    
    	if ( current_user_can( 'contributor' ) ) {
    		$url = $a['contributor'];
    	}
    	if ( current_user_can( 'author' ) ) {
    		$url = $a['author'];
    	}
    	if ( current_user_can( 'editor' ) ) {
    		$url = $a['editor'];
    	}
    
    	if ( current_user_can( 'administrator' ) ) {
    		$url = $a['admin'];
    	}
    
    	return '<a href="' . $url . '" class="rolesurl">' . $content . '</a>' ;
    }
    add_shortcode( 'rolesurl', 'shortcode_rolesurl' );

    Nachdem du das Code Snippet aktiviert hast, kannst du an einer beliebigen Stelle in Beiträgen oder Seiten zum Beispiel diesen Shortcode verwenden:

    [rolesurl 
    url="https://google.de/"
    subscriber="https://www.qwant.com/"
    contributor="https://de.yahoo.com/"
    author="https://www.bing.com/?cc=de"
    editor="https://www.yandex.com/"
    admin="https://duckduckgo.com/"]Suchmaschine[/rolesurl]

    In diesem Beispiel wird das Wort Suchmaschine je nach Benutzerrolle mit der URL einer anderen Suchmaschine verlinkt.

    Die Eingabe des Shortcodes ist zugegeben etwas mühsam. Soll der Shortcode häufig verwendet, sollte ein zusätzlicher Button in die Formatierungsleiste eingebaut werden, der dann ein Eingabeformular für die verschiedenen URL zur Verfügung stellt.

    Thread-Starter Philipp

    (@vonschulthess)

    Hallo Bego

    Vielen Dank für deine Antwort. Gerne formuliere ich mein Anliegen genauer.

    Das Weiterleiten betrifft den Link „Mein Verkaufen“, welcher erscheint, wenn man als User registriert ist. Siehe hier ein Printscreen http://imgur.com/a/F1HZI

    Ein registrierter User kann verschiedene Rollen haben. Hat er diese Userrollen:
    – „Freizuschaltender Käufer“
    – „Auction User“
    soll er beim Klicken auf den besagten Link auf folgende Seite weitergeleitet werden:
    https://www.soldoona.com/identifikation-deiner-person/

    Bei allen anderen Userrollen kann der Link ganz normal im Einsatz sein (keine Weiterleitung nötig).

    Wie ich deinen Beitrag verstehe, ist es am einfachsten, das Code Snipet Plugin zu verwenden. Ich habe es angeschaut und werde es installieren.

    Was muss ich bei shortcode_atts eintragen?
    Url: diejenigen von „Mein Verkaufen“?
    subscriber ?
    contributor ?
    author ?
    editor ?

    Den Shortcode füge ich dann auf der Seite „Mein Verkaufen“ ein und trage für die beiden Userrollen die neue Ziel URL ein. Korrekt?

    Vielen Dank für dein Feedback

    Gruss
    Philipp

    Thread-Starter Philipp

    (@vonschulthess)

    Hallo Bego

    In der Zwischenzeit habe ich die beschriebenen Schritte vorgenommen. Leider ohne Erfolg. Hier die Printscreens meiner Einstellungen

    Snippet:

    View post on imgur.com

    Shortcode auf der „Mein Verkaufen“-Seite:

    View post on imgur.com

    Wenn ich als User „pending_subscriber“ auf der Startseite auf „Mein Verkaufen“ klicke, werde ich normal auf die Seite geleitet, um mich als Verkäufer zu erfassen.

    Was muss ich ändern, sodass der „pending_subsrciber“ und „auction-user“ auf die Identifikationsseite weitergeleitet wird?

    Vielen Dank für dein Feedback

    Gruss
    Philipp

    Thread-Starter Philipp

    (@vonschulthess)

    Hallo Bego

    Bist du noch da? Ich bin dir für dein Feedback sehr dankbar.

    Lieber Gruss
    Philipp

    Das Plugin Code Snippets war nur als Alternative gedacht, wenn du kein eigenes Plugin oder Child Theme erstellen möchtest. Dass die Funktion nicht funktioniert hat, liegt vermutlich daran, dass du das Code Snippets nicht aktiviert hast – mit abgeschnittenen Screenshots ist das schwierig zu beurteilen.

    Ich hab den Shortcode jetzt in ein Plugin umgewandelt, das du hier herunterladen kannst. Schau mal, ob du damit zurecht kommst.

    Der Shortcode müsste sinngemäß so aussehen:
    [userlink url="https://www.soldoona.com" alt-url="https://www.soldoona.com/identifikation-deiner-person"]Mein Verkaufen[/userlink]

    Thread-Starter Philipp

    (@vonschulthess)

    Hi Bego,

    Danke für das Plugin. Ich konnte es installieren und aktivieren.

    Der Shortcode klappt noch nicht. Auf welcher Seite muss er genau hinterlegt werden: auf der Seite, auf der sich der Link „Mein Verkaufen“ befindet oder auf der Zielseite „Mein Verkaufen“?

    Was ist die Bedeutung der ersten URL? Muss das die URL sein, auf der der Link zum Weiterleiten ist?

    Irgendwo muss ich die URL angeben, welche nicht aufgerufen werden soll https://www.soldoona.com/pro-dashboard-seite/

    Vielen Dank für dein Feedback

    Gruss
    Philipp

    Puh. Über was reden wir hier eigentlich?

    Wenn ich dich richtig verstanden habe, möchtest Du

    • auf einer/mehreren Seite einen Link zu einer anderen Seite einfügen.
    • Für Nutzer mit einer bestimmten Nutzerrolle (auction-user oder pending_subscriber) soll der Link zu einer anderen Seite verweisen.
    • Das Plugin definiert einen Shortcode, den du auf der/den Webseite(n) einfügen musst, auf der der Link erscheinen soll.

    Der Shortcode klappt noch nicht.
    Das kann ich nicht nachvollziehen. Ich habe extra eine Testseite aufgesetzt, neue Benutzerrollen auction-user und pending_subscriber hinzugefügt, den Shortcode wie oben beschrieben eingefügt und bekomme je nach Benutzerrolle des angemeldeten Benutzers entweder den Standard-Link (url) oder den alternativen Link (alt-url) angezeigt.

    Auf welcher Seite muss er genau hinterlegt werden: auf der Seite, auf der sich der Link „Mein Verkaufen“ befindet oder auf der Zielseite „Mein Verkaufen“?
    Dort, wo der Link eingefügt werden soll – nicht in der Seite, zu der der Link führt.

    Was ist die Bedeutung der ersten URL? Muss das die URL sein, auf der der Link zum Weiterleiten ist?
    Die erste URL ist die Standard-URL, die zweite URL für die Benutzerrollen auction-user bzw. pending_subscriber.

    Thread-Starter Philipp

    (@vonschulthess)

    Hallo Bego

    Vielen Dank für dein Feedback. In der Zwischenzeit konnte ich diverse Tests durchführen und stelle fest, dass der Shortcode korrekt funktioniert. Je nach User-Rolle wird die eine oder andere URL verwendet. Vielen Dank dafür!

    Offen ist im Moment die Verwendung des Shortscodes am richtigen Ort. Ich habe verstanden, dass der Shortcode auf der Startseite, bzw. in einem Widget hinterlegt sein muss, da dort der Link definiert wird.

    Beim Einfügen des Shortcodes an entsprechender Stelle wird der Code nicht in einen Link umgewandelt, sondern bleibt als Code bestehen. Hier ein Printscreen des Beispiels:

    Siehe „Willkommen bei Soldoona“, letzter Link, bzw. Text
    https://picload.org/view/rwlpgopi/bildschirmfoto2017-08-18um14.1.png.html

    Das Plugins für Eintragung von Content sieht im Backend wie folgt aus:

    Im unteren Teil findest du den Shortcode
    https://picload.org/view/rwlpglrr/bildschirmfoto2017-08-18um14.1.png.html

    Wie kann ich den Code anpassen, dass er im Widget korrekt gelesen wird?

    Vielen Dank für deine Antwort

    Lieber Gruss
    Philipp

    Salamitaktik ist eine Bezeichnung für die Vorgehensweise, größere Ziele durch kleine Schritte oder Forderungen zu erreichen.

    Quelle: Wikipedia.

    Shortcodes werden in Widgets grundsätzlich nicht ausgeführt. Um das zu umgehen, ist folgender, zusätzlicher Code nötig:

    // Enable shortcodes in text widgets
    add_filter( 'widget_text', 'do_shortcode' );

    Ich habe die beiden Zeilen jetzt dem Plugin hinzugefügt. Du brauchst nur die alte Version deaktivieren und löschen, dann die neue Version installieren und aktivieren – dann sollte alles funktionieren.

    Thread-Starter Philipp

    (@vonschulthess)

    Humor ist die Begabung eines Menschen, der Unzulänglichkeit der Welt und der Menschen, den alltäglichen Schwierigkeiten und Missgeschicken mit heiterer Gelassenheit zu begegnen.
    Quelle: Wikipedia

    Danke für die Anpassung. Ich habe das Plugin ersetzt und aktualisiert, sowie den Shortcode eingefügt. Leider musste ich feststellen, dass der Shortcode im Widget Login-logout, welches im Einsatz ist, nicht funktioniert. Der Code erscheint gleich in Text, statt als URL.
    Anders ist es, wenn ich das WordPress Widget Text verwende. Füge ich den Code dort ein, erscheint der Link einwandfrei mit entsprechenden Funktionen.

    Wie kriege ich das für dieses spezifische Widget hin?

    Lieber Gruss
    Philipp

    Kommt darauf an, ob der Hersteller des Plugins/Widgets einen Filter dafür anbietet.

    Gruß, Torsten

    In dem Fall bleibt dir wohl nur die Möglichkeit, das Widget entsprechend deinen Anforderungen anzupassen.

    Ein Workaround wäre, unterhalb des Login-Logout-Widgets ein text-Widget ohne Titel zu verwenden und ggf. Abstände mit zusätzlichem CSS anzupassen.

    Für mich sprengt das hier ein wenig den Rahmen eines kostenlosen Supports, zumal die Details erst nach und nach bekannt wurden.

    @zodiac1978

    Ich lass mich gerne korrigieren, aber soweit ich es beurteilen kann, ist da kein brauchbarer Filter.

    Nach einem Blick in den Code würde ich da zustimmen. Es gibt da noch andere Möglichkeiten, die sprengen hier aber den Rahmen. Mal die Entwickler ansprechen und nachfragen.

    Gruß, Torsten

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Das Thema „User weiterleiten bei spezieller User Rolle“ ist für neue Antworten geschlossen.