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 mit Parameter

Dieses Thema im Forum "Konfiguration" wurde erstellt von h-u-g-o, 29. März 2009.

  1. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hallo,

    ich möchte mir einen Shortcode basteln, der beispielsweise bei
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    die Datei deutsch.php "inkludet" und bei
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    die Datei englisch.php. Ich hänge an der Stelle mit dem Parameter. Hier ist mein kläglicher Versuch:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Liebe Grüße
    Hugo
     
    #1 h-u-g-o, 29. März 2009
    Zuletzt bearbeitet: 31. März 2009
  2. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Statt $atts["sprache"] musst du $sprache nutzen, also z.B.:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Alle Parameter, die dein Shortcode verwendet, werden in Variablen analog zum Parameternamen "gewandelt".
     
  3. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Ah, vielen Dank für den wertvollen Hinweis. :)

    Ich hab's gerade ausprobiert, leider wird mir trotzdem anstelle des Shortcodes nichts im Artikel angezeigt. :(

    So müsste es doch jetzt richtig sein:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  4. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Der Pfad zu den Dateien stimmt? Teste das mal:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  5. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Ja, der Pfad stimmt. Es muss daran liegen, dass entweder $rueckgabewert leer ist oder return $rueckgabewert; nicht ausgeführt wird.

    [edit]Ich hab's getestet, indem ich
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    unter
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    eingefügt habe. Auch "Hallo Welt!" wird nicht angezeigt.[/edit]

    [edit2]Das ist schon komisch, denn
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    funktioniert beim Aufruf mit [mein_shortcode].[/edit2]
     
    #5 h-u-g-o, 31. März 2009
    Zuletzt bearbeitet: 31. März 2009
  6. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Gibt es in der deutsch.php denn Inhalt, der ausgegeben werden soll? echo-Befehle werden nämlich nicht dort ausgegeben, wo der Shorttag steht, das geht alles über den Rückgabewert (wo wird der hier überhaupt gesetzt?).

    Vielleicht geht's so:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #6 spickzettel, 31. März 2009
    Zuletzt bearbeitet: 31. März 2009
  7. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Ja, den gibt es. Der Rückgabewert wird in beiden Dateien gesetzt und hat definitiv auch Inhalt. Siehe dazu edit2 meines vorangehenden Beitrags.
     
  8. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Ok, dann liegt's vielleicht daran, dass er einmal $rueckgabewert und einmal $return_value heißt?
     
  9. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Nein, daran liegt's auch nicht. Das war nur ein Fehler beim Schreiben hier im Forum, Entschuldigung!
     
  10. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Man kann ja spaßeshalber mal return $sprache; probieren und gucken, was dort ausgegeben wird.
     
  11. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Dann wird Folgendes ausgegeben: "deutsch" (inklusive der Anführungszeichen).
     
  12. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Wo kommen die Anführungszeichen her? Irgendwas stimmt da nicht. Gerade getestet:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    [mein_shortcode sprache="deutsch"] ergibt deutsch.
    [mein_shortcode sprache="englisch"] ergibt englisch.
     
  13. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Es geht auch mit $atts["sprache"]. :)

    Das verstehe ich nicht. :(
     
    #13 h-u-g-o, 31. März 2009
    Zuletzt bearbeitet: 31. März 2009
  14. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Du meinst bestimmt:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Oder:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Da lag der Hund begraben. Das Plugin Intypo war schuld. Nach Deaktivieren des Plugins funktioniert's. :rolleyes:

    Ganz herzlichen Dank für deine Unterstützung! :D

    [edit]Wie kann ich denn nun das Plugin Intypo und Shortcodes mit Parametern nutzen?[/edit]
     
    #14 h-u-g-o, 31. März 2009
    Zuletzt bearbeitet: 31. März 2009
  15. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Der Filterfunktion von intypo muss eine niedrigere Priorität gegeben werden, damit zuerst die Shortcodes aufgelöst werden. Die Shortcodes haben lt. Dokumentation eine Priorität von 11.

    Also mal probieren:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    (intypo.php, Zeile 20) zu ändern in

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  16. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Geil, das klappt. Ganz großes Dankeschön! :D
     
  17. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Oh, habe mich wohl zu früh gefreut. :-|

    Zwar wird nun bei aktivem Plugin (Intypo) der Shortcode interpretiert, aber Intypo tut nichts. :(
     
  18. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Vermutlich, weil der Filter convert_chars vorher anschlägt (Priorität 10)... Im Moment fällt mir leider auch keine Lösung mehr ein.
     
  19. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Gerade getestet. Bei mir funktioniert's. Ist allerdings eine ältere WordPress-Testversion (2.65).
     
  20. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hmm, durch eine andere Priorität kann ich's also nicht 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