Shortcode im benutzerdefiniertem Feld ausführen?

  • Hey Leutz, folgende Frage:

    Ich möchte gerne Shortcodes des Plugins "Amazon Link" in einem benutzerdefiniertem Feld eintragen, sodass dieser dann mit folgendem Befehl ausgeführt wird:

    PHP
    <?php echo do_shortcode(get_post_meta($post->ID, 'coste', true)); ?>

    Im zugehörigen Artikel steht bei dem Feld 'coste' = [amazon template=preis&asin=B002FAW6Z0]

    Nun wird an dieser Stelle nach Aufruf der Funktion do_shortcode lediglich ein String ausgegeben, da nur der Text '[amazon template=preis&asin=B002FAW6Z0]' dann dort steht, es eigentlich aber der Preis eines Artikels sein sollte..


    Habe ich vielleicht was vergessen, oder mache ich was falsch, bin über jede Hilfe sehr froh!

    • 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

  • Hallo skatze,

    bei Shortcodes muss der Befehl ein wenig anders aussehen. Probier das mal statt do_shortcode:

    PHP
    <?php echo apply_filters('the_content', get_post_meta($post->ID, 'coste', true)); ?>
  • Super das klappt tatsächlich, nur leider mit einigen unangenehmen effekten.. Die Teilen-Schaltfläche tritt erneuert auf. Schau mal hier: http://www.festival-gadget.de/item/klapp-besteck-aus-edelstahl/

    ich will den Preis ja über die Amazon Schnittstelle unten links neben dem Amazon-Link stehen haben, eben mit Hilfe des Shortcodes. Mit deiner Variante klappt der Preis, allerdings sind da auch paar andere Dinke, die nicht da hin gehören.. irgendeine Idee?

  • Nein die gehören zum normalen Jetpack-Plugin dazu.. Ich nutze das Theme "ebuy", falls es dir geläufig sein sollte. Dort habe ich die Möglichkeit nicht nur Artikel oder Seiten zu erstellen, sondern auch sogenannte GOODS. Eben zur Formatierung der Produkte. Und hier ist der zugehörige Code für die Metabox (Preis und Amazon-Link) unterhalb der Produktbeschreibungen:

    PHP
    <div class="boxmeta clearfix">
            <span class="p-cost"><?php echo apply_filters('the_content', get_post_meta($post->ID, 'wtf_cost', true)); ?> </span>
            <span class="p-link"> <a href="<?php $purchase=get_post_meta($post->ID, 'wtf_purchase', true); echo $purchase; ?>"  title="" target="_blank"> BEI AMAZON KAUFEN* </a> </span>

    In den Variablen wtf_cost und wtf_purchase gebe ich die Kosten für das Produkt an bzw. den Link dazu. Da Amazon aber darauf besteht immer den aktuellen Preis gelistet zu haben, brauche ich eine Möglichkeit diesen dort darzustellen, daher die Idee mit dem Plugin Amazon-Link, wodurch ich mittels Shortcodes die Schnittstelle bereits geschafft habe..

    Besten Dank!

  • Das Problem bei dem Plugin ist, daß es nicht das Wordpress-Shortcode-System nutzt, sondern ein eignes implementiert (warum auch immer).

    Ein apply_filters( 'the_content',...) führt eben auch alle anderen Plugins und Funktionen aus, die sich in 'the_content' eingeklinkt haben. Das ist ja an der Stelle nicht sinnvoll bzw. erwünscht.

    Das Plugin stellt aber die Funktion amazon_shortcode ähnlich wie die WP-Funktion do_shortcode bereit.

    PHP
    if( function_exists(amazon_shortcode) )
        echo amazon_shortcode( get_post_meta($post->ID, 'coste', true) );

    Allerdings sollte dann das Feld 'coste' nur die Parameter und nicht den kompletten Shortcode enthalten.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

Jetzt mitmachen!

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