web-dev-qa-db-fra.com

Comment faire pivoter l'image d'en-tête par jour?

J'aimerais que ma bannière d'en-tête change tous les jours et soit choisie (par exemple, au hasard) dans une liste/un dossier d'images.

Jusqu'à présent, je n'ai trouvé que des plugins qui sélectionnent une bannière aléatoire par publication ou par page, ce que je ne veux pas non plus. Connaissez-vous un plugin ou tout autre moyen?

Edit: Exemple. J'ajoute un dossier à mon installation wordpress. Ce dossier contient des images d'en-tête. Toutes les 24 heures, une image aléatoire est choisie dans ce dossier et devient l'image d'en-tête pendant 24 heures, jusqu'à ce qu'une autre image aléatoire soit choisie.

En fait, je ne me soucie pas de savoir exactement quelle image est choisie - je peux également faire pivoter toutes les images du dossier. La seule chose qui m'importe, c'est que l'image choisie y reste 24 heures.

En gros, c'est la même chose que si je choisissais chaque jour une nouvelle image d'en-tête.

1
mafu
 <div id="header">
    <?php
        mt_srand((int)date('z'));
        $headers=glob(PATH_TO_FILES .'/*.jpg');

        $header=mt_Rand(0,count($headers)-1  );
        ?>
            <img id="header-image"  `src="<?php echo URL_TO_FILES . '/'.basename($headers[$header]);  ?>" alt="header" />




 </div>

remplacez votre en-tête actuel par ceci. Je vais bien sûr vous aider à mettre cela en œuvre si vous avez besoin d'aide. (ou si vous avez besoin du code expliqué)

1
Cronco

Si vous ne pouvez pas coder, désolé non.

Si vous pouvez coder, regardez le hook utilisé par ces plugins et créez un nouveau plugin en conséquence.

1
Denis de Bernardy

Voir http://www.alistapart.com/articles/betterrotator/ Je l'utilise moi-même sur quelques sites.

1
markratledge

Sur la base de la réponse de Cronco et de nombreuses expériences (je ne connais pas PHP ni du fonctionnement interne de wordpress lui-même) et d'un nettoyage, j'ai trouvé une solution qui répond parfaitement à mes besoins.

En utilisant le thème TwentyTen, j'ai édité son header.php comme ceci:

<?php
    // Check if this is a post or page, if it has a thumbnail, and if it's a big one
    if ( is_singular() &&
            has_post_thumbnail( $post->ID ) &&
            ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
            $image[1] >= HEADER_IMAGE_WIDTH ) :
        // Houston, we have a new header image!
        echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
    else : ?>

        <!-- patch mafu begin -->
        <?php
        $headers = glob( get_template_directory() . '/banners/*.jpg' );
        $header = (int)date('z') % count($headers);
        ?>
        <img src="<?php echo get_template_directory_uri() . '/banners/' . basename($headers[$header]); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
        <!-- patch mafu end -->

    <?php endif; ?>

Si aucune image spécifique n'est définie pour la page affichée (ceci est spécifique à ce thème), une image d'en-tête est choisie en fonction du jour actuel parmi toutes les images jpg du dossier theme_directory/banners, qui doit être créé.

J'ai essayé de mieux randomiser l'ordre des images, mais apparemment, ce n'est pas possible facilement, alors je suis parti avec un ordre fixe.

0
mafu

Vous pouvez consulter cet exemple Javascript , il est très facile de le mettre en œuvre dans votre thème.

0
Philip