it-swarm.com.de

Überprüfen Sie, ob der Beitrag/die Seite eine Galerie hat?

Ich möchte nur dann Code ausführen, wenn eine Galerie (die mit dem [gallery]-Shortcode eingefügt wurde) in einen Beitrag/eine Seite eingefügt wurde. Ich habe folgendes gemacht:

gallery_shortcode($post->ID) ?
$gallery = 1 : $gallery = 0;

Dabei wird jedoch immer $gallery = 0 festgelegt, unabhängig davon, ob eine Galerie vorhanden ist oder nicht. Benutze ich das falsch?

6
csm232s

versuchen :

if (strpos($post->post_content,'[gallery') === false){
  $gallery = 0;
}else{
  $gallery = 1;
}
15
Bainternet

Meine Wiederholung der hier vorgeschlagenen Lösung ist die folgende Funktion in der functions.php meines Themas:

function has_gallery($post_id = false) {
    if (!$post_id) {
        global $post;
    } else {
        $post = get_post($post_id);
    }
    return ( strpos($post->post_content,'[gallery') !== false); 
}

Was ich dann in einer Vorlagendatei aufrufen kann (kümmert sich nicht um die Schleife):

$has_gallery = has_gallery($post_id) ? true : false;

oder direkter:

has_gallery($post_id); //will evaluate to true/false

$post_id ist optional. Die folgenden Befehle only funktionieren in The Loop:

has_gallery();
3
Pim Schaaf

Wie wäre es einfach mit der Funktion get_post_gallery(). Dies ist genau die Art und Weise, wie die meisten Themes prüfen, ob ein Beitrag eine Galerie hat, um die korrekten Body-CSS-Klassen auszudrucken:

if ( get_post_gallery() ) {
    // run your code in here
}

P.S. Ich mag wirklich keine Lösungen, die den gesamten Inhalt nach irgendetwas durchsuchen, auch wenn String-Funktionen in PHP normalerweise recht schnell sind, ist dies immer noch ein enormer Performance-Aufwand.

2
2ndkauboy