Shortcode im functions.php zur Einbindung von [audio]

  • Hallo liebe Community,

    ich habe mir einen Funktion in der functions.php geschrieben, die ein Custom Post Field ausliest (enthält die URL zu einer mp3-Datei) und dort in einen echo-Befehl einsetzt, ähnlich folgendem Code:

    PHP
    echo "[audio mp3=\"" . key_values[0] ."\"][/audio]"

    Leider (oder natürlich) wird der Text mir im Frontend der Seite als Text angezeigt, nicht als von WordPress verarbeitetes HTML. Wie kann ich den Befehl formulieren, dass WordPress meinen Befehl auch so erkennt, wie man ihn im Backend des Artikels eintragen würde. Ist echo das Problem? Wenn ja, was ist der korrekte Befehl?

    Vielen Danke,
    Lena

    • 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

  • ein Echo ist dort mMn falsch, da müsste eher ein return hin.
    Aber ohne den Code zu kennen, war es nur eine Befragung meiner Glaskugel.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Danke für die schnelle Antwort. Hier die Funktion:

    PHP
    function add_player () {
        $key_2_values = get_post_custom_values('mp3-to-play', $post_id); // Fülle Array mit allen Values
        if ($key_2_values[0] != '') { // Kein benutzerdefiniertes Feld vergeben? Lasse Output weg..
            echo "[audio mp3=\"" . key_2_values[0] ."\"][/audio]";
        } else {
            // nothing
        }
    }
    //add_shortcode( 'player', 'add_player' );
  • Ich verstehe gerade nicht, wo du den Shortcode generieren lässt. Die wichtigste Zeile hast du auskommentiert.

    Spontan müsstest du es ungefähr so schreiben (auf die Schnelle ungetestet):

    PHP
    function add_player($atts) {
        $key_2_values = get_post_custom_values('mp3-to-play', $post_id); // Fülle Array mit allen Values
        if ($key_2_values[0] != '') { // Kein benutzerdefiniertes Feld vergeben? Lasse Output weg..
            return key_2_values[0];
        }
    }
    add_shortcode( 'audio', 'add_player' );

    über [audio] kannst du dann den Shortcode benutzen.

    Für mich stellt sich nur die Frage, warum du das überhaupt über Shortcodes regeln willst. Warum lässt du dir das Custom Field nicht einfach über das Template anzeigen/abspielen?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Hallo Maxe,

    danke für deine Antwort. Ich möchte dass der Autor seine MP3 in die Mediathek hochläd und die URL dazu als Custom Post Field angibt. Im Template ist der Shortcode verankert. Bleibt die Eingabe des Autors leer, wird kein Player angezeigt. Gibt der Autor eine MP3 mit an, wird der Player angezeigt und greift natürlich auch auf die richtige Datei zu.

    Der Shortcode steckt als im Template, sagen wir mal zwischen dem Header und dem Loop (die beste Platzierung möchte ich noch mittels A/B-Testing ermitteln). Ich dachte eben der Shortcode gibt mir da die bestmögliche Flexibilität. Verschieben. Messen. Wieder verschieben. Messen. Beste Position gefunden. Fertig. Oder ist das die falsche Anwendung von Shortcodes? Bin noch nicht so tief im Thema und über deine Hilfe sehr dankbar.

  • Wenn es denn Shortcode [audio] schon gibt, dieser also nicht von Dir erstellt wird sondern nur von Dir genutzt werden soll, dann muss der Shortcode mit do_shortcode ausgeführt und nicht mit echo ausgegeben werden.

    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!