Tags unterhalb der Kurzbeschreibung ausgeben

  • Hallo
    ich verzweifel gerade.....liegt wahrscheinlich daran das ich von PHP so wenig Ahnung habe.

    Eigentlich möchte ich nur Tags direkt unterhalb der Kurzbeschreibung ausgeben lassen - und zwar nur jene die zum Produkt gehören.

    Beispiel:
    Produkt XY hat die Tags "Apfel", "Birne", "Zitrone".
    Also sollen im Produkt XY unter der Kurzbeschreibung die drei anklickbaren Tags "Apfel", "Birne", "Zitrone" stehen.

    Die entsprechende Datei ist diese:
    [size=14]woocommerce/templates/single-product/short-description.php
    Die Ausgabe von "Hallo Welt" klappt - aber egal welche Version von "tags" ich ausprobiere - es passiert Nichts.[/SIZE]


    Ich habe schon alle "related" Versionen von tags durch die ich finden konnte:
    https://codex.wordpress.org/Function_Reference/the_tags

    Fragen:
    - Welche Funktion ist denn für mein Vorhaben die richtige?
    - Wieso erscheint einfach überhaupt nichts - egal was ich benutze?
    - Muss ich vielleicht noch irgendwas in irgendeine functions.php eintragen damit was ausgegeben wird?

    Ach ja - die Testprodukte haben natürlich Tags

    Gruß Marcus

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Beispiel:
    Produkt XY hat die Tags "Apfel", "Birne", "Zitrone".
    Also sollen im Produkt XY unter der Kurzbeschreibung die drei anklickbaren Tags "Apfel", "Birne", "Zitrone" stehen.

    Die entsprechende Datei ist diese:
    [size=14]woocommerce/templates/single-product/short-description.php
    Die Ausgabe von "Hallo Welt" klappt - aber egal welche Version von "tags" ich ausprobiere - es passiert Nichts.[/SIZE]


    Eigentlich bist du in dem Template falsch. Hier wird nur die Kurzbeschreibung von dem Produktangezeigt.

    Die Tags findest du in dem Template
    templates/single-product/meta.php
    https://github.com/woocommerce/wo…roduct/meta.php

    PHP
    <?php echo wc_get_product_tag_list( $product->get_id(), ', ', '<span class="tagged_as">' . _n( 'Tag:', 'Tags:', count( $product->get_tag_ids() ), 'woocommerce' ) . ' ', '</span>' ); ?>

    hoffe es hilft weiter.

    Mit offenen Augen träumen

  • Hallo & Danke für den Hinweis.

    Was ich jetzt gelernt habe:
    Das Woocommerce eine eigene Tag-Funktion hat - nämlich wc_get_product_tag_list


    Was ich nicht verstehe:
    Warum bin ich in der Template-Datei falsch?
    Dort will ich doch schliesslich die tags angezeigt bekommen.(Unten - dort wo sie jetzt stehen - dürfen sie gerne nochmal vorkommen)

    Was ich jetzt mal gemacht habe:
    Ich habe folgenden String - der ja den Output der Tags bestimmt - in die Template-Datei "short-description.php eingefügt (Mit "Hallo Welt" geht es ja auch):

    PHP
    <?php echo wc_get_product_tag_list( $product->get_id(), ', ', '<span class="tagged_as">' . _n( 'Tag:', 'Tags:', count( $product->get_tag_ids() ), 'woocommerce' ) . ' ', '</span>' ); ?>

    Ergebnis: Site zerschossen

    Irgendwo hab ich also einen grundlegenden Denkfehler.
    Nur wo?

    Gruß Marcus

  • Ich habs jetzt nochmal an einer brandneuen, frischen Installation geprüft.
    Ergebnis:
    1: Tags werden nicht ausgegeben
    2: Es zerschiesst mir komplett das layout (so als ob irgendwo ein <div> geöfnet aber nicht geschlossen wird)

    Was hab ich getan:

  • Irgendwo hab ich also einen grundlegenden Denkfehler.
    Nur wo?

    Damit du auf das Objekt $product-> zugreifen kannst, benötigst du in dem Template das Objekt

    aus global $post; wird global $product, $post;

    nach

    PHP
    <div class="woocommerce-product-details__short-description">
       <?php echo $short_description; // WPCS: XSS ok. ?>
    </div>

    https://github.com/woocommerce/wo…roduct/meta.php

    Mit offenen Augen träumen

  • Hallo und nochmals danke.

    Wenn ich das richtig verstanden habe sollte ich das hier tun (was aber leider auch zu einer zerschossenen Seite führt. Produktbild fehlt, Produktgalerie fehlt und übrig ist nur noch Title, Preis, Shortdescrption und die Sidebar):


  • Wenn ich das richtig verstanden habe sollte ich das hier tun (was aber leider auch zu einer zerschossenen Seite führt. Produktbild fehlt, Produktgalerie fehlt und übrig ist nur noch Title, Preis, Shortdescrption und die Sidebar):

    aus global $post; muss mind. global $product, $post; werden.

    Bei "(was aber leider auch zu einer zerschossenen Seite führt." solltest du den Debug Modus von WordPress einschalten... und eine richtige IDE verwenden?

    Mit offenen Augen träumen

  • 1. Ein WooCommerce kompatibles Template gibt die Tags ganz von alleine aus und zwar unterhalb der Kurzbeschreibung. Das ganze wir gesteuert über den Hook 'woocommerce_single_product_summary' zu finden in der Datei wc-template-hooks.php.
    2. Wird ein nicht Woocommerce kompatibles Theme verwendet bearbeitet man nicht die Template Dateien sonder nutzt die WooCommerce Action Hooks mittels Childtheme. Der Hook 'woocommerce_single_product_summary' ab Priorität 21 ist zu verwenden.
    3. Die Liste der Tags eines Produktes wird mit folgendem Code ausgegeben

    PHP
    <?php 
    global $product;
    echo wc_get_product_tag_list( $product->get_id(), ', ', '<span class="tagged_as">' . _n( 'Tag:', 'Tags:', count( $product->get_tag_ids() ), 'woocommerce' ) . ' ', '</span>' );

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!