1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

SHORTCODE Inhalte nur für bestimmte eingeloggte Benutzer sichtbar machen

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von lukme, 30. Juli 2014.

  1. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Hallo,

    ich erkläre einmal kurz mein Problem:

    Ich habe einen Shortcode auf einer Website gefunden, welchen ich noch gern modifizieren möchte (http://www.tipps.1st-tec.de/wordpress/39-wordpress/121-text-in-wordpress-artikel-nur-fuer-angemeldete-user-sichtbar-machen.html). Dieser Shortcode macht Text in Wordpress Artikeln nur für angemeldete User sichtbar. Auf unserer Website, soll es zwei Usergruppen geben, User1 und User2. Diese haben die gleichen Rechte (Subscriber). Jedoch sollen die Inhalte von der Gruppe User1 nicht bestimmte Inhalte auf der Seite von der Usergruppe User2 sehen und umgekehrt.

    Also war meine Idee, in diesen Shortcode eine Art von Benutzerabfrage noch einzubauen, sodass ich am Ende zwei Shortcodes habe. Einen, mit dem ich die Inhalte von Usergruppe User1 verbinden kann - und einen für die Usergruppe User2, wo ich nur die Inhalte für die Usergruppe User2 hineinschreiben kann.
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Also müsste ich dies mit der is_user_logged_in Funktion verbinden und eine Abfrage machen - jedoch weiß ich nicht wirklich wie ich dies konkret umsetzen muss.

    Ich wäre sehr froh, wenn mir jemand helfen könnte

    Gruß

    lukme
     
  2. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Du kannst es über condition-tags direkt im Template machen, ohne functions.php.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und so kannst Du die verschiedenen IDs der User abfragen, mit z. B. elseif.
     
    #2 SirEctor, 30. Juli 2014
    Zuletzt bearbeitet: 30. Juli 2014
  3. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Auf der Seite war ich auch schon, wo der Code herkommt -jedoch hilft er mir nicht viel bei der Lösung des Problems weiter.

    Trotzdem Danke
     
  4. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Und warum nicht? Vielleicht können wir Dir dann helfen?! Was für ein Problem hast Du damit?
     
  5. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Mit welchem Plugin / Tool erstellst / verwaltest Du die User Gruppen? Deine Funktion muss sich der Methoden / Hooks dieses Plugins bedienen. Nicht selten haben die Entwickler daran bereits gedacht und es gibt Möglichkeiten unproblematisch die Gruppenzugehörigkeit zu bestimmen.
     
  6. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Hi, ich benutze kein Plugin dafür - die Benutzer haben die Subscriber Rolle und das Admin Dashboard ist für sie deaktiviert. Den User Access Manager ich leider nicht benutzen, da er mit einem anderen wichtigen Plugin nicht zusammen funktioniert.
     
  7. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Worin unterscheiden sich den dann Gruppe 1 und Gruppe 2? Woran kann man das festmachen? Gibt es es ein Custom Field für Benutzer, in dem Gruppe 1 oder 2 steht? Das was Du tun willst ist relative einfach und eine solche Abfrage ist nicht schwer. Dazu braucht man aber eine Zuordnung.
     
  8. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Hi, es handelt sich nur um zwei User. Eine ist ein deutscher Händler, welcher die GBP-Preise nicht sehen soll und umgekehrt. Der andere eben Händler aus England, welcher die deutschen Preise nicht sehen soll.
     
  9. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Welche Fehler bekommst Du?
     
  10. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das habe ich jetzt bereits
     
  11. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Ich weiß einfach nicht, wie ich dies auf mein Problem ummünzen kann. Bzw ich habe es versucht, das Beispiel mit dem Shortcode zu verbinden, jedoch konnte jeder User alles sehen.

    Gruß
     
  12. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Die IF Abfrage macht ja auch keinen Unterschied zwischen den beiden Benutzern.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die Funktion ist ungeprüft und soll nur das Konzept verdeutlichen.
     
  13. lukme

    lukme Active Member

    Registriert seit:
    21. April 2014
    Beiträge:
    31
    Zustimmungen:
    0
    Hi, schon mal vielen Dank für deine Mühe. Der Code funktioniert soweit und die Userabfrage ebenfalls. Jedoch ist mein Problem etwas umfangreicher - ich versuche es verständlich zu erklären:
    Der "$content" ist immer ein verschiedener auf den Seiten. Es sind mehrere Produkte wo immer zwischen den jeweiligen Währungen unterschieden wird. Dies kann ich nicht alles in die funktions.php reinschreiben, sondern müsste mir dies von der jeweiligen Seite holen, wo es hinterlegt ist. Ich habe eine Art Produktkonfigurator mit Hilfe des Forums auf die Beine gestellt, wo eine Preiskalkulation statt findet.
    Hier ein Codeausschnitt meiner Seite:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Nach diesem Prinzip wird der Preis berechnet. Nun ist das Problem, wenn ich beide Preisberechnungen auf eine Seite schreibe, buggt das Berechnungsskript, deshalb war mein Ansatz folgender:

    Das Produkt ist auf einer vorherigen Seite mit einem Bild verlinkt - ich hatte nun vor, die Userabfrage hinter das Bild zu legen, dort eine Userabfrage durchzuführen, somit eine Auswahl zu treffen, welche Seite (Euro oder Sfr) aufgerufen wird - entweder die mit den Euro Preisen oder den Schweizer Franken. Wenn ein deutscher Händler also eingeloggt ist, leitet die Userabfrage ihn nun auf die Euro-Seite weiter, einen Schweizer eben auf die Seite mit den Schweizer Franken.

    Das Problem ist ziemlich umfangreich, jedoch denke ich, dass es möglich ist, dies umzusetzen. Google habe ich dazu schon ausgiebig befragt, jedoch keine Lösung gefunden, welche auf mein Problem zutrifft.
    Hoffentlich ist alles verständlich erklärt und ihr könnt mir helfen.

    Gruß

    lukme
     
  14. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Einfach eine globale Variable in Abhängigkeit vom User definieren:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Mit $GLOBALS['my_currency'] kann man nun auf die Währung zugreifen. Wenn die Währung in den Javascripten benötigt wird, geht das via wp_localize_script:

    wp_register_script( 'my_script', 'path/to/myscript.js' );
    $scriptdata = array( 'currency' => $GLOBALS['my_currency'] );
    wp_localize_script( 'my_script', 'my_var', $scriptdata );
    wp_enqueue_script( 'my_script' );

    Im Javascript code kann man nun mit my_var.currency die Währung abrufen.

    Allerdings frage ich mich warum man das Ganze mit einem Shortcode lösen will. Warum erstellt man nicht ein custom user field und schreibt die Währung für den Benutzer ins Profil? Dort könnte man auch Rabatte und sonstiges speichern und die Berechnung in eine Funktion auslagern. Die Ergebnisse dann per Ajax einblenden. Dadurch würde man die teilweise abenteuerliche Berechnung auch nicht im Quelltext preisgeben.

    Und warum wird jQuery in dem Script eingebunden? Das ist bereits in WP enthalten und wird richtigerweise mittels wp_enqueue_script eingebunden. Bei solchen Aktionen ist das nächste Kompatibilitätsproblem fast vorprogrammiert.

    So viele Fragen aber möglicherweise habe ich die Anwendung doch nicht ganz verstanden.
     
  15. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Die globale Variable muss natürlich den User enthalten, da sie ja global gültig ist. Das habe ich im obigen Code nicht berücksichtigt.

    Definition:
    $my_currency = array($user->user_login => "EUR");

    Verwendung
    $GLOBALS['my_currency'][
    $user->user_login]

    Neben den Fragen in meinem vorherigen Post, muss natürlich auch Raum für die Diskussion um globale Variablen existieren.

    Wie schon angedeutet würde ich die Sache anders lösen.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden