WordPress Shortcode entfernen und zur anderweitigen Verwendung speichern
Lesezeit: 2 Minuten
Simon
Der Versuch, den Galerie-Shortcode aus dem Inhalt des Beitrags zu entfernen und in einer Variablen zu speichern, um ihn an anderer Stelle in der Vorlage zu verwenden. Das neue WordPress-Galerie-Tool eignet sich hervorragend, um die gewünschten Bilder auszuwählen und Bildunterschriften zuzuweisen, in der Hoffnung, damit die Galerie zu erstellen, sie dann aber aus dem Inhalt des Frontends herauszuziehen.
Dieser kleine Ausschnitt funktioniert also gut, um die Galerie zu entfernen und die Formatierung erneut anzuwenden … aber ich möchte diesen Galerie-Shortcode speichern.
In der Hoffnung, den Shortcode zu speichern, damit er in ein Array geparst und verwendet werden kann, um ein benutzerdefiniertes Galerie-Setup auf dem Front-End neu zu erstellen. Ein Beispiel für diesen Shortcode, den ich zu speichern versuche, ist …
Irgendwelche Vorschläge würden sehr geschätzt.
Simon, vergewissere dich, dass der Inhalt keine anderen Shortcodes enthält. strip_shortcodes entfernt alle Shortcodes.
– Yitwail
21. Juni 2013 um 1:16 Uhr
Funktion zum Abrufen des Shortcodes der ersten Galerie aus dem Inhalt des Beitrags:
// Return first gallery shortcode
function get_shortcode_gallery ( $post = 0 ) {
if ( $post = get_post($post) ) {
$post_gallery = get_post_gallery($post, false);
if ( ! empty($post_gallery) ) {
$shortcode = "";
return $shortcode;
}
}
}
// Example of how to use:
echo do_shortcode( get_shortcode_gallery() );
Funktion zum Löschen des Shortcodes der ersten Galerie aus dem Inhalt des Beitrags:
// Deletes first gallery shortcode and returns content
function strip_shortcode_gallery( $content ) {
preg_match_all( "https://stackoverflow.com/". get_shortcode_regex() .'/s', $content, $matches, PREG_SET_ORDER );
if ( ! empty( $matches ) ) {
foreach ( $matches as $shortcode ) {
if ( 'gallery' === $shortcode[2] ) {
$pos = strpos( $content, $shortcode[0] );
if ($pos !== false)
return substr_replace( $content, '', $pos, strlen($shortcode[0]) );
}
}
}
return $content;
}
// Example of how to use:
$content = strip_shortcode_gallery( get_the_content() ); // Delete first gallery shortcode from post content
$content = str_replace( ']]>', ']]>', apply_filters( 'the_content', $content ) ); // Apply filter to achieve the same output that the_content() returns
echo $content;
Simon, vergewissere dich, dass der Inhalt keine anderen Shortcodes enthält.
strip_shortcodes
entfernt alle Shortcodes.– Yitwail
21. Juni 2013 um 1:16 Uhr