web-dev-qa-db-ja.com

1日にヘッダ画像を回転させる方法は?

ヘッダーバナーを毎日変更して、画像のリスト/フォルダから(たとえばランダムに)選択します。

これまでのところ、投稿ごとまたはページビューごとにランダムなバナーを選択するプラグインしか見つかりませんでした。どちらも私が望むものではありません。あなたはプラグイン、または他の方法を知っていますか?

編集:例Wordpressのインストールにフォルダを追加しています。このフォルダにはヘッダ画像がいくつか含まれています。 24時間ごとに、このフォルダからランダムな画像が選択され、別のランダムな画像が選択されるまで24時間のヘッダー画像になります。

実際には、画像がどのように選択されているのかはあまり気にしません。フォルダ内のすべての画像を順番に回転させても大丈夫です。私が気にするのは、選んだ画像が24時間そこに残っているということだけです。

基本的に、毎日新しいヘッダー画像を手動で選択しているのと同じです。

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>

現在のヘッダをこれで置き換えてください。あなたが助けを必要とするならば、私はもちろんあなたがこれをさらに実行するのを助けます。 (または説明したコードが必要な場合)

1
Cronco

コーディングできない場合は、申し訳ありません。

コーディングできたら、これらのプラグインが使用しているフックを調べて、それに応じて新しいプラグインを作成します。

1
1
markratledge

Croncoの答えと多くの実験(私はPHPもWordpress自体の内部動作にも精通していません)といくつかのクリーンアップに基づいて、私は私のニーズを完全に満たす解決策を見つけました。

テーマTwentyTenを使用して、私はそのheader.phpをこのように編集しました:

<?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; ?>

表示されているページに特定の画像が設定されていない場合(これはこのテーマに固有のものです)、theme_directory/bannersフォルダ内のすべてのjpg画像から当日に基づいてヘッダ画像が選択されます。

私は画像の順序をもっとランダムにしようとしましたが、どうやらこれは簡単な方法では不可能であるので、私は固定の順序で行きました。

0
mafu

あなたは この Javascriptの例を見てみることができます、それをあなたのテーマに実装するのはとても簡単です。

0
Philip