Gibt es einen Hook in WordPress, mit dem ich die Ausgabe eines bestimmten Shortcodes filtern kann? Etwas wie das:
add_filter('shortcode_output', 'my_filter_function', 2);
function my_filter_function ( $output, $shortcode ) {
....
}
Wo $shortcode
wäre so etwas [my_schortcode]
oder noch besser, Shortcode und seine Attribute in einem Array getrennt.
the_content
. Es funktioniert für meinen Anwendungsfall.WordPress 4.7 hat einen neuen Filter eingeführt,
do_shortcode_tag
um genau dies zu tun.quelle
function example_shortcode_output($output, $tag, $attr, $m){ if($tag == 'gallery') $output = str_replace("\t", '', $output); return $output; } add_filter('do_shortcode_tag', 'example_shortcode_output', 10, 4);
Während es keinen Haken gibt, gibt es eine kleine Problemumgehung, die Ihr Endziel ermöglicht. Sie können einen neuen Shortcode erstellen, den Sie pro Instanz immer um jeden anderen Shortcode wickeln, dessen Ausgabe Sie filtern möchten.
Verwendung in einem Beitrag usw.:
In functions.php:
quelle
Das einzige, was Sie filtern können, sind die Attribute für den Shortcode:
Punkt ist, das
$shortcode
ist das dritte Argument bei der Registrierung eines Shortcodes. Dieses Argument ist ziemlich neu und wird von fast keinem Shortcode verwendet. Daher wird auf die Standardeinstellung zurückgegriffen - einestring
von''
.Dies führt zu einem lustigen Ergebnis:
Also, ja , mit einer 90% igen Chance müssen wir die Leistung von jedem (!) Shortcode filtern und versuchen, irgendwie den Shortcode zu identifizieren , indem sie entweder einig Standardargumente (
$pairs
) oder durch Eingabeargumente (unmöglich). Dann können wir endlich die Ausgabe verarbeiten. Können wir den String selbst verarbeiten? Nein. Dies muss so erfolgen, wie @s_ha_dum oben gezeigt hat.quelle
Während @s_ha_dum eine anständige Antwort gab, Sie können eine neue Shortcode zum Zweck der Filterung eines bestehenden Shortcode erstellen. Zum Beispiel,
Beachten Sie, dass Sie für den
[embed]
Shortcode verwenden müssenanstatt
do_shortcode
quelle