質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • PHP

    24511questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9121questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • CSS

    7761questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

【wp】ヘッダーの背景画像をランダムで表示したい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,203

yujiG

score 3

wpのテーマを編集しています。
ヘッダーにある画像をランダムに表示するようにしたいのですが、うまくいきません。

編集中のサイトがこちら
テーマがこちらです

ヘッダーの背景画像は、固定ページを読み込んでいます。

以下が、ヘッダーの背景画像を読み込んでいる(であろう)phpソースになります。

途中で日本語のコメントアウトがあるので、そこまでは読み飛ばしてください

<?php
/**
 * Custom functions
 *
 * @package Theme Freesia
 * @subpackage Freesia Empire
 * @since Freesia Empire 1.0
 */
/********************* Set Default Value if not set ***********************************/
    if ( !get_theme_mod('freesiaempire_theme_options') ) {
        set_theme_mod( 'freesiaempire_theme_options', freesiaempire_get_option_defaults_values() );
    }/********************* freesiaempire RESPONSIVE AND CUSTOM CSS OPTIONS ***********************************/
function freesiaempire_resp_and_custom_css() {
    $freesiaempire_settings = freesiaempire_get_theme_options();
    if( $freesiaempire_settings['freesiaempire_responsive'] == 'on' ) { ?>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <?php } else{ ?>
    <meta name="viewport" content="width=1070" />
    <?php  }
}
add_filter( 'wp_head', 'freesiaempire_resp_and_custom_css');


/***************** USED CLASS FOR BODY TAGS ******************************/
function freesiaempire_body_class($classes) {
    global $freesiaempire_site_layout, $freesiaempire_content_layout, $post;
    $freesiaempire_settings = freesiaempire_get_theme_options();
    if ($post) {
        $layout = get_post_meta($post->ID, 'freesiaempire_sidebarlayout', true);
    }
    $freesiaempire_site_layout = $freesiaempire_settings['freesiaempire_design_layout'];
    $freesiaempire_blog_layout_temp = $freesiaempire_settings['freesiaempire_blog_layout_temp'];
    $freesiaempire_content_layout = $freesiaempire_settings['freesiaempire_sidebar_layout_options'];
    if (empty($layout) || is_archive() || is_search() || is_home()) {
        $layout = 'default';
    }
    if(!is_page_template('page-templates/freesiaempire-corporate.php')) {
        if ('default' == $layout) {
            $themeoption_layout = $freesiaempire_content_layout;
            if ('left' == $themeoption_layout) {
                $classes[] = 'left-sidebar-layout';
            } elseif ('right' == $themeoption_layout) {
                $classes[] = '';
            } elseif ('fullwidth' == $themeoption_layout) {
                $classes[] = 'full-width-layout';
            } elseif ('nosidebar' == $themeoption_layout) {
                $classes[] = 'no-sidebar-layout';
            }
        } elseif ('left-sidebar' == $layout) {
            $classes[] = 'left-sidebar-layout';
        } elseif ('right-sidebar' == $layout) {
            $classes[] = '';//css blank
        } elseif ('full-width' == $layout) {
            $classes[] = 'full-width-layout';
        } elseif ('no-sidebar' == $layout) {
            $classes[] = 'no-sidebar-layout';
        }
        if($freesiaempire_blog_layout_temp == 'large_image_display'){
            $classes[] = "blog-large";
        }elseif ($freesiaempire_blog_layout_temp == 'medium_image_display'){
            $classes[] = "small_image_blog";
        }
    }
    if (!is_page_template('page-templates/freesiaempire-corporate.php') && !is_page_template('alter-front-page-template.php') ){
        $classes[] = '';
    }elseif (is_page_template('page-templates/freesiaempire-corporate.php')) {
        $classes[] = 'tf-business-template';
        $classes[] = 'page-template-default';
    }
    if (is_page_template('page-templates/page-template-contact.php')) {
            $classes[] = 'contact';
    }
    if ($freesiaempire_site_layout =='boxed-layout') {
        $classes[] = 'boxed-layout';
    }
    if ($freesiaempire_site_layout =='small-boxed-layout') {
        $classes[] = 'boxed-layout-small';
    }
    return $classes;
}
add_filter('body_class', 'freesiaempire_body_class');

/***************************** wp_enqueue_script ********* *******************/
function freesiaempire_jquery_javascript_file($hook) {
    if( $hook != 'widgets.php' )
    return;
    wp_enqueue_script( 'freesiaempire-script', get_template_directory_uri() . '/inc/js/freesia-empire-image-upload.js');
    wp_enqueue_media();
}
add_action( 'admin_enqueue_scripts', 'freesiaempire_jquery_javascript_file' );

/**************************** SOCIAL MENU *********************************************/
function freesiaempire_social_links() {
    if ( has_nav_menu( 'social-link' ) ) : ?>
    <div class="social-links clearfix">
    <?php
        wp_nav_menu( array(
            'container'     => '',
            'theme_location' => 'social-link',
            'depth'          => 1,
            'items_wrap'      => '<ul>%3$s</ul>',
            'link_before'    => '<span class="screen-reader-text">',
            'link_after'     => '</span>',
        ) );
    ?>
    </div><!-- end .social-links -->
    <?php endif;
}
add_action ('social_links', 'freesiaempire_social_links');

/******************* DISPLAY BREADCRUMBS ******************************/
function freesiaempire_breadcrumb() {
    if (function_exists('bcn_display')) { ?>
        <div class="breadcrumb home">
            <?php bcn_display(); ?>
        </div> <!-- .breadcrumb -->
    <?php }
}

/*********************** freesiaempire PAGE SLIDERS ***********************************/
function freesiaempire_page_sliders() {
    $freesiaempire_settings = freesiaempire_get_theme_options();
    $excerpt = get_the_excerpt();
    global $freesiaempire_excerpt_length;
    global $post;
    $freesiaempire_page_sliders_display = '';
    $freesiaempire_total_page_no         = 0;
    $freesiaempire_list_page                = array();
    for( $i = 1; $i <= $freesiaempire_settings['freesiaempire_slider_no']; $i++ ){
        if( isset ( $freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] ) && $freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] > 0 ){
            $freesiaempire_total_page_no++;
            $freesiaempire_list_page    =    array_merge( $freesiaempire_list_page, array( esc_attr($freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] )) );
        }
    }
        if ( !empty( $freesiaempire_list_page ) && $freesiaempire_total_page_no > 0 ) {
            $freesiaempire_page_sliders_display     .= '<div class="main-slider"> <div class="layer-slider">';
                    $get_featured_posts         = new WP_Query(array( 'posts_per_page'=> $freesiaempire_settings['freesiaempire_slider_no'], 'post_type' => array('page'), 'post__in' => $freesiaempire_list_page, 'orderby' => 'post__in', ));
                    $j=1; $i=0;
            while ($get_featured_posts->have_posts()):$get_featured_posts->the_post();



// 多分ここから下のソースで画像を呼び出している
// get_post_thumbnail_idを使って、固定ページのサムネイルを呼び出して
// wp_get_attachment_image_srcを使ってurlにしている


            $attachment_id = get_post_thumbnail_id();
            $image_attributes = wp_get_attachment_image_src($attachment_id,'freesiaempire_slider_image');
                        $i++;
                        $title_attribute                 = apply_filters('the_title', get_the_title($post->ID));
                        $excerpt                         = substr(get_the_excerpt(), 0 , 160);
                        if (1 == $i) {$classes        = "slides show-display";} else { $classes = "slides hide-display";}
                $freesiaempire_page_sliders_display        .= '<div class="'.$classes.'">';




        // 多分↓のソースでurlに入れている


                if ($image_attributes) {
                    $freesiaempire_page_sliders_display     .= '<div class="image-slider clearfix" title="'.the_title('', '', false).'"' .' style="background-image:url(' ."'" .esc_url($image_attributes[0])."'" .')">';
                }



// やってみた事
// >>shuffle($image_attributes)とかshuffle($attachment_id)してみた
// 配列になっているなら、混ぜとけばいいのでは?と思ったけど失敗


// 予想
// >>get_post_thumbnail_id()では、一つのidしか取ってきていない


// やりたい事
// get_post_thumbnail_id()で取り出す固定ページをランダムにしたい!



ソースコードが終わった後も記述あります!




                if ($title_attribute != '' || $excerpt != '') {
                    $freesiaempire_page_sliders_display     .= '<div class="container">';
                    if($j == 1){
                    $freesiaempire_page_sliders_display     .= '<article class="slider-content clearfix freesia-animation fadeInRight">';
                    }else{
                        $freesiaempire_page_sliders_display     .= '<article class="slider-content clearfix">';
                    }

                $remove_link = $freesiaempire_settings['freesiaempire_slider_link'];
                    if($remove_link == 0){
                        if ($title_attribute != '') {
                            $freesiaempire_page_sliders_display .= '<h2 class="slider-title"><a href="'.get_permalink().'" title="'.the_title('', '', false).'" rel="bookmark">'.get_the_title().'</a></h2><!-- .slider-title -->';
                        }
                    }else{
                        $freesiaempire_page_sliders_display .= '<h2 class="slider-title">'.get_the_title().'</h2><!-- .slider-title -->';
                    }
                        $freesiaempire_page_sliders_display     .='</article><!-- end .slider-content --> </div><!-- end .container -->';
                }

                $freesiaempire_page_sliders_display     .='</div><!-- end .slides -->';
                $j++;
            endwhile;
            wp_reset_postdata();

        }
                echo $freesiaempire_page_sliders_display;
}

// このコードは文字数の関係上、最後の方をカットしました。

?>

固定ページは多くあるのですが

wpデフォルトのカスタマイズで指定したページのサムネイル画像を上から順に選択しています!

![イメージ説明

大雑把な質問で申し訳ありません。
何か少しでも良いので、こうしてみれば?みたいな助言をいただきたいです。
私ならこうする等でも構いません。

どうかお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2017/03/17 14:04

    WordPressテーマはテーマ名と取得したURLを質問文に追記ください。(URLにはリンクを張ることができます)

    キャンセル

  • yujiG

    2017/03/17 14:13

    ありがとうございます。テーマのURLを載せてみましたが、これで大丈夫ですか??

    キャンセル

  • kei344

    2017/03/17 14:19

    ``で囲むのはコードで、リンクの場合[http://example.jp](http://example.jp) こうするとリンクを張れますよ。

    キャンセル

  • yujiG

    2017/03/17 14:24

    知りませんでした!ありがとうございます。

    キャンセル

回答 1

checkベストアンサー

+2

WordPressのカスタマイズに慣れていれば下記が記事(アイテム)を取得する部分だと気づけると思います。下記部分をみてピンと来ないなら、入門書などを何冊か買って通読することをお勧めします。

while ($get_featured_posts->have_posts()):$get_featured_posts->the_post();
    /* 略 */
endwhile;

で、ランダムで1枚だけということであれば、'posts_per_page'=> 1 にして 'orderby' => 'rand' にすれば1件だけランダムで出ると思います。(未テスト)

// $get_featured_posts = new WP_Query(array( 'posts_per_page'=> $freesiaempire_settings['freesiaempire_slider_no'], 'post_type' => array('page'), 'post__in' => $freesiaempire_list_page, 'orderby' => 'post__in', ));
// ↓
   $get_featured_posts = new WP_Query(array( 'posts_per_page'=> 1, 'post_type' => array('page'), 'post__in' => $freesiaempire_list_page, 'orderby' => 'rand', ));

【WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット】
http://notnil-creative.com/blog/archives/1288#file-wp-query-ref-php-L149

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/17 18:27 編集

    ランダムになりました!
    本当にありがとうございます(_ _)もっと勉強します。
    無事にできました!

    キャンセル

  • 2017/09/21 21:04

    参考になりました。
    ちなみに、スライダーの数はデフォルトで4つだと思うのですが、
    これを増やす方法はございますでしょうか。

    キャンセル

  • 2017/09/21 21:14

    To: WataruTさん
    新たに質問されては?
    「freesiaempire_slider_no 」でテーマ内をgrepしたら出てくると思いますよ。

    キャンセル

  • 2017/09/22 10:31

    keiさん 了解です。

    キャンセル

  • 2017/09/22 10:35

    質問作りました。
    https://teratail.com/questions/93450

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    24511questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9121questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • CSS

    7761questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。