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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

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

PHP

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

CSS

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

Q&A

解決済

1回答

3141閲覧

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

yujiG

総合スコア11

WordPress

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

PHP

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

CSS

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

1グッド

1クリップ

投稿2017/03/17 05:00

編集2017/03/17 05:23

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

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

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

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

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

php

1 2<?php 3/** 4 * Custom functions 5 * 6 * @package Theme Freesia 7 * @subpackage Freesia Empire 8 * @since Freesia Empire 1.0 9 */ 10/********************* Set Default Value if not set ***********************************/ 11 if ( !get_theme_mod('freesiaempire_theme_options') ) { 12 set_theme_mod( 'freesiaempire_theme_options', freesiaempire_get_option_defaults_values() ); 13 }/********************* freesiaempire RESPONSIVE AND CUSTOM CSS OPTIONS ***********************************/ 14function freesiaempire_resp_and_custom_css() { 15 $freesiaempire_settings = freesiaempire_get_theme_options(); 16 if( $freesiaempire_settings['freesiaempire_responsive'] == 'on' ) { ?> 17 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 18 <?php } else{ ?> 19 <meta name="viewport" content="width=1070" /> 20 <?php } 21} 22add_filter( 'wp_head', 'freesiaempire_resp_and_custom_css'); 23 24 25/***************** USED CLASS FOR BODY TAGS ******************************/ 26function freesiaempire_body_class($classes) { 27 global $freesiaempire_site_layout, $freesiaempire_content_layout, $post; 28 $freesiaempire_settings = freesiaempire_get_theme_options(); 29 if ($post) { 30 $layout = get_post_meta($post->ID, 'freesiaempire_sidebarlayout', true); 31 } 32 $freesiaempire_site_layout = $freesiaempire_settings['freesiaempire_design_layout']; 33 $freesiaempire_blog_layout_temp = $freesiaempire_settings['freesiaempire_blog_layout_temp']; 34 $freesiaempire_content_layout = $freesiaempire_settings['freesiaempire_sidebar_layout_options']; 35 if (empty($layout) || is_archive() || is_search() || is_home()) { 36 $layout = 'default'; 37 } 38 if(!is_page_template('page-templates/freesiaempire-corporate.php')) { 39 if ('default' == $layout) { 40 $themeoption_layout = $freesiaempire_content_layout; 41 if ('left' == $themeoption_layout) { 42 $classes[] = 'left-sidebar-layout'; 43 } elseif ('right' == $themeoption_layout) { 44 $classes[] = ''; 45 } elseif ('fullwidth' == $themeoption_layout) { 46 $classes[] = 'full-width-layout'; 47 } elseif ('nosidebar' == $themeoption_layout) { 48 $classes[] = 'no-sidebar-layout'; 49 } 50 } elseif ('left-sidebar' == $layout) { 51 $classes[] = 'left-sidebar-layout'; 52 } elseif ('right-sidebar' == $layout) { 53 $classes[] = '';//css blank 54 } elseif ('full-width' == $layout) { 55 $classes[] = 'full-width-layout'; 56 } elseif ('no-sidebar' == $layout) { 57 $classes[] = 'no-sidebar-layout'; 58 } 59 if($freesiaempire_blog_layout_temp == 'large_image_display'){ 60 $classes[] = "blog-large"; 61 }elseif ($freesiaempire_blog_layout_temp == 'medium_image_display'){ 62 $classes[] = "small_image_blog"; 63 } 64 } 65 if (!is_page_template('page-templates/freesiaempire-corporate.php') && !is_page_template('alter-front-page-template.php') ){ 66 $classes[] = ''; 67 }elseif (is_page_template('page-templates/freesiaempire-corporate.php')) { 68 $classes[] = 'tf-business-template'; 69 $classes[] = 'page-template-default'; 70 } 71 if (is_page_template('page-templates/page-template-contact.php')) { 72 $classes[] = 'contact'; 73 } 74 if ($freesiaempire_site_layout =='boxed-layout') { 75 $classes[] = 'boxed-layout'; 76 } 77 if ($freesiaempire_site_layout =='small-boxed-layout') { 78 $classes[] = 'boxed-layout-small'; 79 } 80 return $classes; 81} 82add_filter('body_class', 'freesiaempire_body_class'); 83 84/***************************** wp_enqueue_script ********* *******************/ 85function freesiaempire_jquery_javascript_file($hook) { 86 if( $hook != 'widgets.php' ) 87 return; 88 wp_enqueue_script( 'freesiaempire-script', get_template_directory_uri() . '/inc/js/freesia-empire-image-upload.js'); 89 wp_enqueue_media(); 90} 91add_action( 'admin_enqueue_scripts', 'freesiaempire_jquery_javascript_file' ); 92 93/**************************** SOCIAL MENU *********************************************/ 94function freesiaempire_social_links() { 95 if ( has_nav_menu( 'social-link' ) ) : ?> 96 <div class="social-links clearfix"> 97 <?php 98 wp_nav_menu( array( 99 'container' => '', 100 'theme_location' => 'social-link', 101 'depth' => 1, 102 'items_wrap' => '<ul>%3$s</ul>', 103 'link_before' => '<span class="screen-reader-text">', 104 'link_after' => '</span>', 105 ) ); 106 ?> 107 </div><!-- end .social-links --> 108 <?php endif; 109} 110add_action ('social_links', 'freesiaempire_social_links'); 111 112/******************* DISPLAY BREADCRUMBS ******************************/ 113function freesiaempire_breadcrumb() { 114 if (function_exists('bcn_display')) { ?> 115 <div class="breadcrumb home"> 116 <?php bcn_display(); ?> 117 </div> <!-- .breadcrumb --> 118 <?php } 119} 120 121/*********************** freesiaempire PAGE SLIDERS ***********************************/ 122function freesiaempire_page_sliders() { 123 $freesiaempire_settings = freesiaempire_get_theme_options(); 124 $excerpt = get_the_excerpt(); 125 global $freesiaempire_excerpt_length; 126 global $post; 127 $freesiaempire_page_sliders_display = ''; 128 $freesiaempire_total_page_no = 0; 129 $freesiaempire_list_page = array(); 130 for( $i = 1; $i <= $freesiaempire_settings['freesiaempire_slider_no']; $i++ ){ 131 if( isset ( $freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] ) && $freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] > 0 ){ 132 $freesiaempire_total_page_no++; 133 $freesiaempire_list_page = array_merge( $freesiaempire_list_page, array( esc_attr($freesiaempire_settings['freesiaempire_featured_page_slider_' . $i] )) ); 134 } 135 } 136 if ( !empty( $freesiaempire_list_page ) && $freesiaempire_total_page_no > 0 ) { 137 $freesiaempire_page_sliders_display .= '<div class="main-slider"> <div class="layer-slider">'; 138 $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', )); 139 $j=1; $i=0; 140 while ($get_featured_posts->have_posts()):$get_featured_posts->the_post(); 141 142 143 144// 多分ここから下のソースで画像を呼び出している 145// get_post_thumbnail_idを使って、固定ページのサムネイルを呼び出して 146// wp_get_attachment_image_srcを使ってurlにしている 147 148 149 $attachment_id = get_post_thumbnail_id(); 150 $image_attributes = wp_get_attachment_image_src($attachment_id,'freesiaempire_slider_image'); 151 $i++; 152 $title_attribute = apply_filters('the_title', get_the_title($post->ID)); 153 $excerpt = substr(get_the_excerpt(), 0 , 160); 154 if (1 == $i) {$classes = "slides show-display";} else { $classes = "slides hide-display";} 155 $freesiaempire_page_sliders_display .= '<div class="'.$classes.'">'; 156 157 158 159 160 // 多分↓のソースでurlに入れている 161 162 163 if ($image_attributes) { 164 $freesiaempire_page_sliders_display .= '<div class="image-slider clearfix" title="'.the_title('', '', false).'"' .' style="background-image:url(' ."'" .esc_url($image_attributes[0])."'" .')">'; 165 } 166 167 168 169// やってみた事 170// >>shuffle($image_attributes)とかshuffle($attachment_id)してみた 171// 配列になっているなら、混ぜとけばいいのでは?と思ったけど失敗 172 173 174// 予想 175// >>get_post_thumbnail_id()では、一つのidしか取ってきていない 176 177 178// やりたい事 179// get_post_thumbnail_id()で取り出す固定ページをランダムにしたい! 180 181 182 183ソースコードが終わった後も記述あります! 184 185 186 187 188 if ($title_attribute != '' || $excerpt != '') { 189 $freesiaempire_page_sliders_display .= '<div class="container">'; 190 if($j == 1){ 191 $freesiaempire_page_sliders_display .= '<article class="slider-content clearfix freesia-animation fadeInRight">'; 192 }else{ 193 $freesiaempire_page_sliders_display .= '<article class="slider-content clearfix">'; 194 } 195 196 $remove_link = $freesiaempire_settings['freesiaempire_slider_link']; 197 if($remove_link == 0){ 198 if ($title_attribute != '') { 199 $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 -->'; 200 } 201 }else{ 202 $freesiaempire_page_sliders_display .= '<h2 class="slider-title">'.get_the_title().'</h2><!-- .slider-title -->'; 203 } 204 $freesiaempire_page_sliders_display .='</article><!-- end .slider-content --> </div><!-- end .container -->'; 205 } 206 207 $freesiaempire_page_sliders_display .='</div><!-- end .slides -->'; 208 $j++; 209 endwhile; 210 wp_reset_postdata(); 211 212 } 213 echo $freesiaempire_page_sliders_display; 214} 215 216// このコードは文字数の関係上、最後の方をカットしました。 217 218?> 219

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

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

![イメージ説明

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

どうかお願いします。

Tatsurou👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/03/17 05:04

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

2017/03/17 05:13

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

2017/03/17 05:24

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

回答1

0

ベストアンサー

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

PHP

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

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

PHP

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', )); 2// ↓ 3 $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 05:56

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yujiG

2017/03/17 09:38 編集

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

2017/09/21 12:04

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

2017/09/21 12:14

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

2017/09/22 01:31

keiさん 了解です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問