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

Problem mit eigenen Shortcodes

Dieses Thema im Forum "Allgemeines" wurde erstellt von toopi, 6. März 2017.

Schlagworte:
  1. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    Hallo zusammen,
    ich denke das ist das falsche Unterforum aber ich habe kein Passendes gefunden. Ich habe ein kleines eigenes Plugin geschrieben, welches mir Shortcodes bereitstellt für eine Multi-Tag-Suche, eine Tagcloud und eine Bereitstellung der Beiträge einer Kategorie in einem div. Soweit so gut und es klappt auch alles. Doch ich habe folgendes Problem:

    Wenn ich die Shortcodes in einer Seite bzw. einem Beitrag einfüge, dann wird der Inhalt an den Anfang des Contents gestellt und nicht an die Stelle, wo ich ihn im Inhalt eingefügt habe.

    Beispiel:
    TextTextText
    [shortcode]
    TextTextText

    Ausgabe:
    [shortcode]
    TextTextText
    TextTextText

    Wordpress-Version: 4.7.2 Theme: Twenty Seventeen

    Es handelt sich um eine Testseite auf Arbeit und daher bitte ich um Verständnis, dass ich diese hier nicht öffentlich posten will.

    Für die Veranschaulichung hier die Tagcloud-Funktion:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Könnt ihr mir helfen meinen Fehler zu finden?

    Viele Grüße

    Thomas
     
  2. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Versuche es mal so
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    Danke aber leider ist das Ergebnis das Gleiche.
     
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.681
    Zustimmungen:
    1.786
    Der Fehler ist, dass ein Shortcode nichts direkt per echo o.ä. ausgeben darf, sondern die Ausgaben am Ende per return zurückgibt (wie im korrigierten Beispiel von SirEctor).

    Anmerkung 1: Wenn ein Shortcode statt im Content direkt in PHP aufgerufen werden soll, wird dann dort das entspr. echo ergänzt, z.B. <?php echo do_shortcode( 'schlagwoerter' ); ?>.

    Anmerkung 2, passt hier evtl. nicht ganz, aber trotzdem für den einen oder anderen sicher interessant: Für eine generelle Anpassung der Parameter der WordPress Tag-Cloud kann man den widget_tag_cloud_args Filter verwenden.

    Hier ist noch ein Fehler:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ändern in:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #4 b3317133, 6. März 2017
    Zuletzt bearbeitet: 6. März 2017
  5. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    @b3317133: Jetzt funktioniert es, vielen Dank. Zumindest mit dieser Funktion. Die anderen Beiden werde ich auch gleich Mal testen :)
     
  6. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Ups, das habe ich dann wohl übersehen ...

    Schön das es jetzt funktioniert.
     
  7. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    Ja auf jeden Fall :)

    Ich habe jetzt aber das nächste Problem, was ich mir nicht erklären kann. Bin jetzt bei der Ausgabe in einem div für eine Kategorie. Hier der Code:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Aufgerufen wird der Shortcode im WP-Editor mit [kategorieposts cat="1" catname="Software"] .

    Nach der Umstellung auf die Funktionsrückgabe habe ich jetzt das Problem, dass erst alle Beitragsüberschriften ausgegeben werden (das in der while-Schleife) und anschließend die Div-Box kommt. Die Überschriften sind die aus der angegebenen Kategorie.

    Wahrscheinlich wieder ein ganz billiger Fehler aber ich habe wohl gerade Tomaten auf den Augen ;) Könnt ihr mir auch bei dem Problem helfen?
     
  8. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.681
    Zustimmungen:
    1.786
    the_title() -> get_the_title()
     
  9. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0

    du bist der Wahnsinn. ;)

    Habe jetzt
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jetzt gibt er mir die URLs in den Boxen aus aber nicht die Titel. ´Das sollte aber machbar sein.
     
  10. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    hab es! Danke nochmal :)
     
  11. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.681
    Zustimmungen:
    1.786
  12. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    ok, schaue ich mir mal an.
     
  13. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    nochmal ich ;) Ich dachte ich mache lieber keinen neuen Thread auf für meine neue Fragestellung, da sie auf der alten Frage ausbaut.

    Ich habe ja die Boxen, die je nach Kategorie die Beiträge anzeigen. Ich kann auch im Shortcode einen Tag (bzw. und/oder-verknüpft mehrere Schlagworte) übergeben und es werden mir die entsprechenden Beiträge korrekt angezeigt. Jetzt möchte ich das Ganze in die Archive-Seite einpflegen, sodass je nach gewähltem Tag (oder mehrere) die richtigen Beiträge nach Kategorien in den Boxen angezeigt werden. Ich habe aber leider noch keine Möglichkeit gefunden die an die Archivseite übergebenen Tags auszulesen. Bisher kriege ich in den von mir gefundenen Varianten alle vorhandenen Tags ausgegeben, was ja nicht der Sinn ist.
    Gibt es da eine Möglichkeit, die übergebenen Tags auszulesen? Am liebsten ohne dass ich mit JavaScript die URL aufdrösele.
     
  14. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.681
    Zustimmungen:
    1.786
  15. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    Besten Dank, das schaue ich mir an und ich bin mir sicher, dass es funktioniert, wenn du es geschrieben hast ;)
     
  16. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    leider funktioniert es nur zum Teil. Ich greife auf den Namen zu und übergebe ihn. Das geht wunderbar ($queried_object->name; statt term_id)

    Allerdings funktioniert es nicht mit der MultiTag-Suche, da nur eine ID bzw. ein Tag übergeben wird. Komme ich an die Schlagworte tag1,tag2 für die oder-Verknüpfung und tag1+tag2 für die und-Verknüpfung ran?
     
  17. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.681
    Zustimmungen:
    1.786
    Schau Dir das Beispiel auf der verlinkten Seite an, das gibt alles aus, was man via get_queried_object() bekommt. Evtl. kommst Du mit get_query_var() weiter, oder Du schaust direkt in $wp_query nach, hier ein Beispiel analog mit Kategorien.
     
  18. toopi

    toopi Member

    Registriert seit:
    28. Dezember 2016
    Beiträge:
    13
    Zustimmungen:
    0
    So einfach kann die Lösung sein. Das genügt für das Auslesen aller Tags
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Danke nochmals :)
     
  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