it-swarm.com.de

Wie verwende ich Shortcodes in HTML-Tags?

Ich habe versucht, Shortcodes mit einem Parameter in die HTML-Ausgabe aufzunehmen, wie unten gezeigt:

<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Dies bringt die PHP Funktion do_shortcode() zum Absturz.

Ist so etwas mit Shortcodes wirklich nicht möglich?

Die Methodenbeschreibung selbst enthält eine Warnung:

Benutzer mit der Fähigkeit unfiltered_html * erhalten möglicherweise eine unerwartete Ausgabe, wenn spitze Klammern in Tags verschachtelt sind.

Ein Absturz von PHP ist jedoch nicht die Art von unerwarteter Ausgabe, die möglich sein sollte.

PS: Die aufgerufene Funktion ist

function echocode( $atts ){
    return "Hello World";
}

und hinzugefügt als

add_shortcode("foocode", "echocode");

Die Funktion wird niemals ausgeführt. (Es wird kein Startechocode gedruckt)

4
ApolloLV

shortcodes sind in HTML-Attributen nicht erlaubt, Shortcodes sind keine Programmiersprachen, sie sind Platzhalter für den richtigen HTML-Inhalt.

5
Mark Kaplun

Hoffe das hilft jemandem:

Anstatt dies zu tun: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Sie können dies tun: [foocode parameter1=value parameter2=othervalue] und dann dies tun:

add_shortcode( 'foocode', 'prefix_foocode' );

function prefix_foocode( $atts ) {

    // Normalize $atts, set defaults and do whatever you want with $atts.

    $html = '<a href="https://example.com/folder/edit.php?action=someaction&id=' . $atts['parameter1'] .'&edittoken=' . $atts['parameter2'] . '">linktext</a>'
}

Für das, was es wert ist, scheinen Shortcodes, die keine Parameter akzeptieren, in HTML-Tags zu funktionieren. Es sind diejenigen, die Parameter haben, die dies nicht tun.

Beispiel: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a> funktioniert nicht

Bsp .: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode]&edittoken=[foo-other-code]">linktext</a> funktioniert (zumindest für mich)

Ich habe einen einfachen Shortcode wie diesen verwendet, um den Pfad für Bilder auf meiner Site auszugeben, damit ich mich nicht jedes Mal an den Pfad erinnern muss (ich verwende nicht den Medienmanager).

Ich hoffe, das hilft jemandem, der später über diese Frage stolpert.

3
Crazycoolcam

Bitte versuchen Sie es mit diesem

<a href="https://example.com/folder/edit.php?action=someaction&id=<?php echo do_shortcode("[foocode parameter='value']"); ?>&edittoken=<?php echo do_shortcode("[foocode parameter='othervalue']"); ?>">linktext</a>
2
mukto90

Um den Shortcode innerhalb des rohen HTML-Elements auszuführen, müssten Sie die Callback-Funktion finden, die über den Shortcode aufgerufen wird, und diese Funktion dann im rohen HTML-Element ausgeben.

Wenn Ihr Shortcode beispielsweise [foo_code] lautet, können Sie herausfinden, welche Funktion beim Ausführen dieser Funktion zurückgerufen wird, indem Sie den add_shortcode () für diesen Shortcode suchen (in diesem Fall [foo_code]).

add_shortcode('foo_code', 'foo_callback_function');

Wenn Sie nun wissen, welche Funktion aufgerufen wird, können Sie diese Funktion einfach im rohen HTML-Code wie folgt wiedergeben:

[echo foo_callback_function();]

Für weitere Details, warum es funktioniert, checkout diese Antwort . Ich hoffe es hilft!

0
sheetal