J'ai une fonction qui ouvre un répertoire pré-désigné, crée un tableau des fichiers image dans le répertoire, puis tire un nom d'image aléatoire de la liste de tableaux pour l'écho vers une page Web. Le problème est parfois que cela ne tire pas le nom de l'image.PHP Random Image La fonction insère parfois une image vide
Voici le code php:
<?php
$actualpath = get_stylesheet_directory_uri() . "/img/banners/";
// open this directory
$myDirectory = opendir("wp-content/themes/beautysalon/img/banners/");
// get each entry
while($entryName = readdir($myDirectory)) {
$dirArray[] = $entryName;
}
// close directory
closedir($myDirectory);
function getRandomFromArray($ar) {
mt_srand((double)microtime() * 1000000); // php 4.2+ not needed
$num = array_rand($ar);
return $ar[$num];
}
$randomPicture = getRandomFromArray($dirArray);
?>
Et le code que j'utilise pour afficher réellement l'image sur la page Web:
<?php
if (!is_front_page()) {
echo '<img src="' . $actualpath . $randomPicture . '"/>';
};
?>
Lorsque le code fonctionne, il finit par écho quelque chose comme:
<src="http://sitename.com/directorypath/image.png" />
Ce qui est exactement ce que je l'ai l'intention de faire. Mais quand cela ne fonctionne pas, il ne tire le nom de l'image pour une raison quelconque et finit par produire quelque chose comme ça, ce qui se traduit par une image brisée:
<src="http://sitename.com/directorypath/" />
Il est presque comme si le php n'a pas eu le temps pour parcourir la fonction avant que le contenu de la page soit généré, mais je pensais que php était toujours exécuté complètement avant le rendu de la page.
Working example of the PHP script in action can be found here.
Le script fonctionne sur toutes les pages sauf la page d'accueil et la page de contact.
Cela semble fonctionner parfaitement. Une idée de pourquoi la méthode opendir créait des problèmes? – Longblog
Je ne sais pas exactement à coup sûr, mais cela pourrait être un problème avec le logiciel PHP lui-même. Veuillez marquer ma réponse comme résolue si elle a résolu votre problème. Merci! – synquall
Marqué comme résolu maintenant. J'attendais juste votre réponse avant de la marquer comme résolue. Je voulais connaître votre avis sur ce qui pourrait causer le problème et je ne savais pas si vous reviendriez si elle était marquée comme résolue. ;) – Longblog