Shortcode für Lagerstatus pro Variation

  • Hallo,
    ich würde gerne über meine functions.php einen Shortcode erstellen, den ich dann je nach Bedarf auf den einzelnen Produktseiten nutzen kann.
    Dieser Shortcode soll mir die Lagermenge pro Variation ausgeben. Wenn ich also das Produkt "T-Shirt Blumenprint" habe und es von diesem Shirt 3 Größenvarianten gibt (S,M,L), sollte der Shortcode folgendes Ergebnis liefern:
    S: 0 auf Lager
    M: 3 auf Lager
    L: 1 auf Lager
    Alternativ würde es mir auch reichen wenn nur angegeben wird ob die Variation auf Lager ist oder nicht (also ohne Menge).

    Hat jemand eine Idee wie ich das hinbekomme?
    Vielen Dank schonmal!

    • 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

  • Danke für deine schnelle Antwort.
    Wenn ichs übers Backend aktiviere, erscheint die Lagermenge immer nur bei der gerade ausgewählten Variation. Ich möchte aber dass alle Variationen mit den verfügbaren Mengen untereinander aufgelistet sind (ich brauche das als Shortcode weil ich es auch noch woanders als auf der Produktseite einbinden möchte).

  • Bin jetzt kei Profi...

    jedoch mit einen shorcode ist es nicht getan, da zb. der aufruf [COLOR=#242729][FONT=Consolas]<?php echo $product->get_stock_quantity(); ?>
    [/FONT][/COLOR]Mit einen Produkt und Varianten aufgerufen werden muss.

    Das heist das müsste mit der Produkt ID geschen...

  • nur mal eine idee...
    musst du selbst testen

    [COLOR=#303336]
    [/COLOR][COLOR=#101094]global[/COLOR][COLOR=#303336] $woocommerce[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#101094]global[/COLOR][COLOR=#303336] $product[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#393318]$product_id [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#303336] [/COLOR][COLOR=#7D2727]hier die produkt id[/COLOR][COLOR=#303336];
    [/COLOR][COLOR=#393318] $product [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#303336] wc_get_product[/COLOR][COLOR=#303336]([/COLOR][COLOR=#303336]$product_id[/COLOR][COLOR=#303336]);
    echo $product->get_stock_quantity();
    [/COLOR][COLOR=#303336]
    [/COLOR]

  • [size=10]Danke, die Produkt ID soll ja dynamisch aufgerufen werden, halt immer von dem Produkt auf dessen Seite der Shortcode eingebunden ist. Wie müsste ich deinen Code dafür abändern?
    Das Plugin [/SIZE][h=2][size=10]WooCommerce Availability Chart
    [/SIZE][/h][size=10] (https://wordpress.org/plugins/woocom…lability-chart/) tut im Grunde genau das was ich will, aber ich bräuchte das Ergebnis als Shortcode, den ich an beliebiger Stelle einbinden kann....Und besten würde das Ergebnis nur sagen: Variante 1: Auf Lager, Variante 2: nicht auf Lager.[/SIZE]

  • Man könnte für das o.g. Plugin einen eigenen Shortcode [FONT=courier new][woocommerce_availability_chart][/FONT] erstellen und darin z.B. [FONT=courier new]WooCommerce_Availability_Chart()->availability_chart();[/FONT] aufrufen, z.B. so (ungetestet):

    PHP
    function woocommerce_availability_chart_func( $atts ) {
        $output = null;
        if ( function_exists( 'WooCommerce_Availability_Chart' ) ) {
            ob_start();
            WooCommerce_Availability_Chart()->availability_chart();
            $output = ob_get_clean();
        }
        return $output;
    }
    add_shortcode( 'woocommerce_availability_chart', 'woocommerce_availability_chart_func' );
  • [size=10]aber ich bräuchte das Ergebnis als Shortcode, den ich an beliebiger Stelle einbinden kann....[/SIZE]

    Ja da ist der hund begraben, auf was für einer seite willst du das einbinden?
    woher soll der shortcode wissen welches produkt den stand azeigen soll?

    EDIT: ah wer lesen kann ist klar im vorteil ;) auf der gleichen seite wo das produkt ist

  • Mit dem genannten Plugin und dem Code von b3317133 würde es funktionieren. Vielen Dank dafür.
    Allerdings hab ich die Hoffnung noch nicht aufgegeben, dass es auch einfacher und ohne zusätzliches Plugin geht. Es muss doch eine Möglichkeit geben, alle angelegten Varianten eines Produktes mit dem Zusatz "auf Lager" oder "nicht auf Lager" ausgeben zu lassen, oder?!

    Ich hatte auch noch das hier gefunden http://stackoverflow.com/questions/3051…ity-woocommerce und den Code von db306 und Tuesdave versucht. Der lieferte allerdings nur leere Zeilen :/

    Einmal editiert, zuletzt von sommermädchen (15. Januar 2017 um 16:09)

  • hm...
    verusch mal das... habe gerade keine spielwiese zum testen

    [COLOR=#303336]<?[/COLOR][COLOR=#303336]php
    [/COLOR][COLOR=#101094]global[/COLOR][COLOR=#303336] $product[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    $numleft [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#303336] $product[/COLOR][COLOR=#303336]->[/COLOR][COLOR=#303336]get_stock_quantity[/COLOR][COLOR=#303336]();[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#101094]if[/COLOR][COLOR=#303336]([/COLOR][COLOR=#303336]$numleft[/COLOR][COLOR=#303336]==[/COLOR][COLOR=#7D2727]0[/COLOR][COLOR=#303336])[/COLOR][COLOR=#303336] [/COLOR][COLOR=#303336]{[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#858C93]// out of stock[/COLOR][COLOR=#303336]
    echo [/COLOR][COLOR=#7D2727]"Nicht auf Lager"[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#303336]}[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#101094]else[/COLOR][COLOR=#303336] [/COLOR][COLOR=#101094]if[/COLOR][COLOR=#303336]([/COLOR][COLOR=#303336]$numleft[/COLOR][COLOR=#303336]==[/COLOR][COLOR=#7D2727]1[/COLOR][COLOR=#303336])[/COLOR][COLOR=#303336] [/COLOR][COLOR=#303336]{[/COLOR][COLOR=#303336]
    echo [/COLOR][COLOR=#7D2727]"Only "[/COLOR][COLOR=#303336].[/COLOR][COLOR=#303336]$numleft [/COLOR][COLOR=#303336].[/COLOR][COLOR=#7D2727]" item left."[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#303336]}[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#101094]else[/COLOR][COLOR=#303336] [/COLOR][COLOR=#303336]{[/COLOR][COLOR=#303336]
    echo [/COLOR][COLOR=#7D2727]"Only "[/COLOR][COLOR=#303336].[/COLOR][COLOR=#303336]$numleft [/COLOR][COLOR=#303336].[/COLOR][COLOR=#7D2727]" items left."[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#303336]}[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#303336]?>[/COLOR]

  • Das liefert leider immer "Nicht auf Lager", auch wenn die Variante auf Lager ist...
    Und ich bräuchte das ganze eben als Auflistung aller Varianten, d.h. die Auflistung soll immer alle Varianten mit Lagerstatus anzeigen, egal welche gerade ausgewählt ist...

  • hab mir gerade das modul runter geladen und mal angesehen.
    Das ist ja ein sehr schlankes modul.

    Oder schau dir mal selbst den Code an....
    Vielleicht das eine oder andere rauskopiern.
    und im tpl einfügen ;)

  • Kann man noch beliebig aufbohren/vereinfachen.

    Shortcode ist [instock]

  • Mit dem Code von Azrael_0815 funktioniert es soweit - JUHU, vielen Dank!
    Jetzt versuche ich das Ergebnis noch über das Plugin Contact Form 7 Dynamic Text Extension per Mail zu senden (dafür habe ich den Shortcode benötigt), aber das funktioniert noch nicht, da wird einfach nichts angezeigt....

Jetzt mitmachen!

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