La 2ème branche de code ci-dessous affiche toutes les images trouvées dans le répertoire ($ dir).Liste toutes les images d'un répertoire, sauf celles trouvées [image1.jpg, image2.jpg, etc]
Je voudrais simplement exclure des images de la sortie qui apparaissent dans le tableau ci-dessous excludeImages $:
/* collect attached images into an array to test against */
global $wpdb;
$excludeImages = array();
$excludeImagesFiles = $wpdb->query(
"SELECT meta_value
FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file'");
array_push($excludeImages, $excludeImagesFiles);
C'est le code tel qu'il existe sans filtre exclure ...
$imgs = array();
if ($dh = opendir($dir))
{
if(!get_option('cb2_underscores')){$myfilter="^";}else{$myfilter="";}
while (($file = readdir($dh)) !== false)
{
if (!is_dir($file)&& $file != "." && $file != ".." && preg_match("/^[".$myfilter."_].*\.(bmp|jpeg|gif|png|jpg)$/i", $file))
// and $file not contained in the $excludeImagesFiles array
{
array_push($imgs, $file);
}
}
closedir($dh);
} else {
die('cannot open ' . $dir);
}
if($imgs)
{
sort($imgs);
echo '<div class="images">';
foreach ($imgs as $idx=>$img)
{
$class = ($idx == count($imgs) - 1 ? ' class="last"' : '');
echo $prelink.' src="' . $url . $img . '" alt="' .$img . '"' . $class . ' />'.$postlink;
}
echo '</div>';
}
Quel code ai-je besoin d'insérer dans la branche while pour m'assurer que l'une des images du tableau ne soit pas ajoutée à array_push()?
Examinez les itérateurs de regex et de répertoires. Ils vont rendre ce code beaucoup plus facile. Voyez cette question que j'ai posée concernant un sujet similaire: http://stackoverflow.com/questions/3321547/help-using-regexiterator-in-php – Chris