WordPress Shortcode entfernen und zur anderweitigen Verwendung speichern

Lesezeit: 2 Minuten

Benutzer-Avatar
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.

$content = strip_shortcodes( get_the_content() );
$content = apply_filters('the_content', $content);
echo $content;

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;

Verwenden Sie einfach get_shortcode_regex():

<?php
$pattern = get_shortcode_regex();
preg_match_all("https://stackoverflow.com/".$pattern.'/s', $post->post_content, $shortcodes);
?>

Dadurch wird ein Array aller Shortcodes in Ihren Inhalten zurückgegeben, die Sie dann wie folgt ausgeben können, wo immer Sie möchten:

<?php
echo do_shortcode($shortcodes[0][1]);
?>

Ebenso könnten Sie die Array-Einträge verwenden, um nach Shortcodes in Ihren Inhalten zu suchen und diese mit str_replace() zu entfernen:

<?php
$content = $post->post_content;
$content = str_replace($shortcodes[0][1],'',$content);
?>

Etwas wie $gallery = do_shortcode(''); könnte funktionieren.

1298170cookie-checkWordPress Shortcode entfernen und zur anderweitigen Verwendung speichern

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy