ホルダーを指定して、その中の画像を管理パネルのカスタムヘッダーに含めます。
画像ファイルは、ヘッダー画像の大きさを統一(テーマのデフォルトサイズ)することと、サムネール画像とセットで存在することが必須です。
チャイルドテーマの場合は、チャイルドテーマに指定したホルダがあれば、それを追加、なければ、親テーマの指定ディレクトリの画像を読み込みます。
テーマのfunctions.phpに追加します
<?php
add_action( 'after_setup_theme', 'header_setup' );
function header_setup(){
/* ヘッダー画像ホルダthemes / images / testを指定して、png jpgファイルを、カスタムヘッダー管理画面に追加する例*/
my_register_header_images( array('png','jpg'),array(),'images/test/' );
}
/**
* ヘッダー画像のホルダを指定する
*
*
* $support_file_type 許可する拡張子を配列で指定
* $exclude_file 除外ファイルのファイル名を配列で指定
* $header_dir テーマルートからヘッダ画像ホルダのパス
*/
function my_register_header_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);
}
}
?>