it-swarm.com.de

Ermitteln Sie, ob das Bild nicht angehängt ist

Ich habe ein Problem mit nicht angehängten Anhängen. Ich benutze image.php, um die Wordpress-Bildergalerie anzuzeigen. Ich zeige immer "großes Bild" (für das aktuell angeklickte Bild) ... und unter diesem Bild zeige ich Rest-Daumen aus dieser Galerie.

Ich benutze diesen Code, um ein "großes" Bild anzuzeigen:

$img_attachment = wp_get_attachment_image_src($post->ID, 'medium');
$img_height = $img_attachment[2];
$img_full = wp_get_attachment_image_src($post->ID, 'large');

<div style="text-align:center">
<img src="<?php echo $img_attachment[0]; ?>"/>
</div>

Und diesen Code verwende ich, um den Rest der Daumen aus dieser Galerie anzuzeigen:

$gallery_shortcode = '[gallery id="' . intval( $post->post_parent ) . '" columns="4"]';
$gallery_content = do_shortcode($gallery_shortcode);
echo $gallery_content;

Und was ist das Problem? Das Problem ist, dass Wordpress die Datei Image.php auch für nicht angehängte Bilder verwendet. Wenn Sie also 5 KB nicht angehängte Bilder haben und jemand von Google zu einem der nicht angehängten Bilder kommt (coz google sammelt auch nicht angehängte Bilder, egal ob Sie das wollen), dann zeigt die Image.php-Datei dieses Bild als "großes Bild" und in Thumbs unter In diesem großen Bild zeigt er ALLE nicht angehängten Bilder an ... also listet er alle 5.000 Bilder auf einer Seite auf!

Ich denke es gibt 2 Lösungen.

  1. Erkennen Sie irgendwie, ob das Bild nicht an einen Beitrag angehängt ist ... und wenn dies zutrifft, dann zeigen Sie die Bildergalerie unter, oder nicht an
  2. Ich muss einige Änderungen im zweiten Teil des Codes vornehmen, um das zu beheben

Wie macht man das?

4
Nebojsa Lukic

Für nicht angehängte Bilder hat die Spalte post_parent in der Tabelle wp_posts den Wert 0.

Ihr Galerie-Shortcode lautet in diesem Fall:

[gallery id="0" columns="4"]

das heißt, Sie rufen get_children() mit post_parent als 0 auf.

Sie können z. benutze den Gallery Shortcode Callback gallery_shortcode() direkt:

if( $parent_id = $post->post_parent )
{
    echo gallery_shortcode( 
        [ 
            'id'      => (int) $parent_id, 
            'columns' => 4 
        ] 
    );
}

hier wird nur die Galerie für angehängte Bilder angezeigt.

3
birgire