web-dev-qa-db-fra.com

Détecter si l'image est non attachée

J'ai un problème avec les pièces jointes non attachées. J'utilise image.php pour afficher la galerie d'images Wordpress. Je montre toujours "grande image" (pour l’image cliquée actuelle) ... et sous cette image, je montre les pouces restants de cette galerie.

J'utilise ce code pour afficher une "grande" image:

$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>

Et ce code que j'utilise pour montrer le reste des pouces de cette galerie:

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

Et quel est le problème? Le problème est que Wordpress utilise également le fichier Image.php pour les images non attachées. Donc, si vous avez 5K d'images non attachées et que quelqu'un passe de Google à l'une des images non attachées (coz google collecte également les images non attachées, peu importe si vous ne le ferez pas), le fichier Image.php montrera cette image comme "grande image" et dans les pouces sous cette grande image, il montrera TOUTES les images non jointes ... alors il listera les 5K d'images sur 1 page!

Je pense qu'il y a 2 solutions.

  1. D'une manière ou d'une autre, détecter si l'image n'est pas jointe à un message ... et si est-ce vrai, alors ne pas afficher la galerie des vignettes dessous, ou
  2. J'ai besoin de faire quelques changements dans la deuxième partie du code pour résoudre ce problème

Comment faire un de ça?

4
Nebojsa Lukic

Pour les images non attachées , la colonne post_parent de la table wp_posts a la valeur 0.

Votre shortcode de galerie dans ce cas est:

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

ce qui signifie que vous appelez get_children() avec post_parent en tant que 0.

Vous pouvez par exemple utilisez directement la fonction shortcode callback gallery_shortcode() de la galerie:

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

où nous affichons uniquement la galerie d'images attachées.

3
birgire