PHP: Erst Shortcode ausführen dann Auslesen

  • Hallo,

    ich habe folgendes Problem, die Url für das Beitragsbild wird von einem Plugin erstellt, welche dann über ein Shortcode abgerufen werden kann, soweit alles gut...

    Das Problem ist, dass der Shortcode noch nicht ausgeführt wurden ist, und deshalb nicht die Url verwendet wird, sondern der Shortcode an sich.

    Gibt es eine möglichkeit den Shortcode erst auszuführen, und die Ausgabe
    dann in eine Variable zu Packen um diese dann als Bild Url zu verwenden ?


    Hier der gekürzte Code aus der functions.php:


    Habe schon mein bestes versucht, bin jetzt langsam am verzweifeln..

    Hoffe das mir da jemand helfen kann, wäre echt super.

    LG

    • 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

  • Ich sehe keinen Shortcode

    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.

  • Code
    ...
    $imdb = do_shortcode( '[imdb:id(' . $formdata['imdb_id'] . ')]' );
    $imdb_picture = do_shortcode( '[imdb:poster]' );
    ...
    $imageurl = $imdb . $imdb_picture;
    ...
    $image_url  = $imageurl;
    ...

    wenn ich mir das richtig rausgesucht habe und er das so zusammensetzt wie ich das denke, müsste das eigentlich richtig sein... lass dir doch mal die ausgabe von $imdb und $imdb_picture per echo ausgeben und schau ob die Ausgaben korrekt sind

  • Hallo

    Nach deinem letzten Post hier: http://forum.wpde.org/plugins-und-wi…e-fehler-2.html komme ich so langsam drauf was du willst ;-)

    Nur leider wird das so nicht funktionieren.
    Der Grund:

    Das verwendete PlugIn ruft die Daten von IMDB erst BEIM Speichern eines Beitrags ab. Du benötigst aber die Daten schon VOR dem Abspeichern, da du dadurch ja den Beitragstitel, den Permalink etc generieren willst. Nur woher soll der Shortcode die Daten nehmen, wenn selbige noch garnicht importiert wurden?

    Eine Möglichkeit wäre unter Umständen, dass verwenden der dynamischen Shortcodes. Allerdings muss man dabei eines beachten:
    Die Shortcodes [imdblive:directors], [imdblive:posterRemote], [imdblive:title], [imdblive:title_nolink] etc. beziehen sich alle auf einen davor angeführten Shortcode welcher die imDB-ID vorgiebt ([imdblive:id(tt0000000)]). Wie dabei die Übergabe der ID an die anderen Shortcodes bzw. deren Funktionen funktioniert weiss ich nicht (das musst du selber herausfinden), ich denke allerdings, dass die Übergabe an die Post_ID gekoppelt sein wird. Selbige hast du beim Erstellen eines Beitrages via Funktion allerdings noch nicht, sodass sich hier die Katze wieder in den Schwanz beisst.

    Ich kann dir aber sagen, dass es sicher eine Lösung dafür gibt (für ein Angebot kannst du mir ja gerne eine PN schicken ;-) ) - allerdings ist deren Afwand, zumindest für mich, nicht im Rahmen eines Forumbeitrages zu erledigen.

    LG, pixselig
    PS: ich hoffe, ich habe verständlich erklärt, woran es vermutlich "hacken" wird -> vielleicht reicht dir das ja, und du kommst selber auf eine Lösung des Problems.

  • Ich verstehe immer noch nicht was gewollt ist. Dem Text nach erwarte ich EINEN Shortcode, also die Funktion soll einen shortcode darstellen. Den sehe ich aber nicht, ich sehe nur das DREI verschiedene Shortcodes in der Funktion ausgeführt werden. Dann sehe ich, dass aus Formulardaten ein neuer Post entstehen soll. Das Ganze wird dann vor dem Senden einer Email eingehookt.

    Wenn palynic erklären könnte was er will (z.B. Kunde kommt auf die Webseite, gibt Daten in ein Formular ein, daraus wird ein Post gebastelt, publiziert und im Anschluss als Email verschickt.) also die exakte Anwendung, dann kann man sicherlich helfen.

    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.

  • So wie das im Beispiel-Quelltext steht (mit dem Doppelpunkt), ist das kein normaler WP-Shortcode, sondern scheinbar eine Eigenentwicklung des Plugin-Erstellers. Deshalb funktioniert auch do_shortcode() nicht und es gibt folglich kein Daten.

    Ein Ähnliches Problem hatte kürzlich jemand mit einem Amazon-Plugin:
    http://forum.wpde.org/konfiguration/…html#post562610

    Also Lösung mußte dort dann eine spezielle Shortcode-Funktion verwendet werden, die das Plugin bereitstellt. Ob es sowas bei dem Plugin hier gibt, kann ich nicht sagen.

    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!