サポート » テーマ » ヘッダー画像をテーマフォルダから自動で取得し、管理したい。

  • 解決済 oyoneoyone

    (@oyoneoyone)


    PHP初心者ですが、ヘッダー画像をテーマの指定フォルダにアップするだけで
    管理できたら楽だなぁと思い、チャレンジしてみたのですが
    知識が足りなくて苦戦しています。
    アドバイスをいただけないでしょうか?

    管理画面用のサムネイルは、CSSでサイズ調整しようと考えています。

    ↓functions.php

    $imgFolder = 'wp-content/themes/hoge/images/headers/' ;
    // ディレクトリ内のファイル一覧取得
    $imgList = scandir($imgFolder);
    // ファイル数を取得
    $count = count($imgList);
    // 画像ファイルを表示
    for($i = 0; $i < $count; $i++){
    $file = pathinfo($imgList[$i]);
    $fileName = $file["basename"];
    $fileExtension = $file["extension"];
    if($fileExtension == ('jpg' or 'JPG' or 'jpeg' or 'gif' or 'GIF' or 'png' or 'PNG')){
    
    $head_img_url[url]=get_stylesheet_directory_uri()."images/headers/".$fileName;
    $head_img_thumbnail[thumbnail_url]=get_stylesheet_directory_uri()."images/headers/".$fileName;
    
    $top_headerslist= $head_img_url.",".$head_img_thumbnail;
    $head_imglist[$fileName]=array($top_headerslist);
    
    }}
    
    $thlists = join(",", $head_imglist);
    register_default_headers(array($thlists));

    宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター gatespace

    (@gatespace)

    元々機能(関数)としてあるカスタムヘッダーを使う方法ではどうですか?
    http://codex.wordpress.org/Custom_Headers

    こんにちは

    何かのサンプルコードを参考に、当てはめたのですか?

    $imgListの値は取れていますか?
    配列に含まれる . や..は除去しなくていいですか?

    ファイル名だけで、pathinfo()は動作しますか?

    $head_imglistは、配列の形式が違いませんか?

    http://codex.wordpress.org/Function_Reference/register_default_headers

    それずれの関数の働きを、もう一度見直してみてください

    確かに便利そうなので、書いてみました、参考になればうれしいです

    Twentyfourteen、Raindropsの二つでしかテストしていないので、不都合があれば、教えてください。

    <?php
    
    add_action( 'after_setup_theme', 'header_setup' );
    
    function header_setup(){
    
    /* ヘッダー画像ホルダthemes / images / testを指定して、png jpgファイルを、カスタムヘッダー管理画面に追加する例*/
    	my_register_directory_images( array('png','jpg'),array(),'images/test/' );
    }
    
    /**
     * ヘッダー画像のホルダを指定する
     *
     *
     * $support_file_type 許可する拡張子を配列で指定
     * $exclude_file 除外ファイルのファイル名を配列で指定
     * $header_dir テーマルートからヘッダ画像ホルダのパス
     */
    function my_register_directory_images ( $support_file_type = array(), $exclude_file = array(), $header_dir = 'images/headers/') {
    
    	$header_images     = array();
    
    	if( empty( $support_file_type ) ) {
    
    		$support_file_type = array( 'jpeg', 'jpg', 'png' );
    	}
    
    	if ( is_child_theme() && file_exists( trailingslashit( get_stylesheet_directory() ). $header_dir ) ) {
    
    		$img_dir_path = trailingslashit( get_stylesheet_directory() ). $header_dir;
    		$img_dir_uri  = trailingslashit( get_stylesheet_directory_uri() ). $header_dir;
    
    	} else {
    
    		$img_dir_path = trailingslashit( get_template_directory() ). $header_dir;
    		$img_dir_uri  = trailingslashit( get_template_directory_uri() ). $header_dir;
    	}
    
    	$img_lists = scandir($img_dir_path);
    
    	foreach( $img_lists as $list ) {
    
    		if ( $list !== '.' && $list !== '..' && !preg_match( '|thumbnail|u',$list ) ) {
    
    			$file_path = $img_dir_path. $list;
    			$file_info = pathinfo( $file_path );
    				$file_name = $file_info["basename"];
    				$file_type = $file_info["extension"];
    				$name      = $file_info['filename'];
    
    			if ( ! in_array($file_type, $support_file_type ) ) {
    				continue;
    			}
    
    			if( ! empty( $exclude_file ) && in_array($list, $exclude_file ) ) {
    				continue;
    			}
    
    			$uri         = esc_url( $img_dir_uri. $file_name );
    			$uri_thumb   = esc_url( $img_dir_uri. $name.'-thumbnail'.'.'. $file_type );
    			$description = $name;
    
    			$header_images[ $name ] = array( 'url' => $uri, 'thumbnail_url' => $uri_thumb, 'description' => $description );
    		}
    	}
    
    	if( !empty( $header_images) ) {
    
    		register_default_headers($header_images);
    	}
    }
    ?>
    トピック投稿者 oyoneoyone

    (@oyoneoyone)

    返事が遅くなりすみせん!
    >gatespace様
    まずPHPの基礎から勉強しないといけないとわかりました。。。
    通常のカスタムヘッダーでアップロードして管理してもいいんですが、
    メディア内でごちゃごちゃしたくないので指定フォルダに入れるだけで選べたら。。という選択肢もほしかった次第です。

    >nobita様
    無い知識でサンプルコードを参考に、当てはめてました。
    教えて頂いたコードでうまくいきました!(twentyeleven)

    勉強になります!ありがとうございます!!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「ヘッダー画像をテーマフォルダから自動で取得し、管理したい。」には新たに返信することはできません。