これでよろしくお願いいたします。
function my_set_archive_loop_before_widget_area(){
// 公開されている投稿タイプを呼び出し
$postTypes = get_post_types( array( 'public' => true ) );
// 固定ページはアーカイブないので削除
unset( $postTypes['page'] );
foreach ( $postTypes as $postType ) {
// Get post type name
/*-------------------------------------------*/
$post_type_object = get_post_type_object( $postType );
if ( $post_type_object ) {
// Set post type name
$postType_name = esc_html( $post_type_object->labels->name );
// Set post type widget area
register_sidebar(
array(
'name' => sprintf( __( 'Archive page loop before (%s)', 'lightning-pro' ), $postType_name ),
'id' => $postType . '-archive-loop-before',
'description' => '',
'before_widget' => '<aside class="widget %2$s" id="%1$s">',
'after_widget' => '</aside>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
} // if( $post_type_object ){
} // foreach ($postTypes as $postType) {
}
add_action( 'widgets_init', 'my_set_archive_loop_before_widget_area' );
function my_display_archive_loop_before_widget_area( $query ){
if ( ! is_archive() && ! is_home() ){
return;
}
global $wp_query;
$post_type_info = lightning_get_post_type();
$post_type = $post_type_info['slug'];
if ( $post_type ) {
// ※ get_post_type() は該当記事がない場合に投稿タイプが取得できないため
$widget_area = $post_type . '-archive-loop-before';
if ( is_active_sidebar( $widget_area ) ) {
dynamic_sidebar( $widget_area );
}
}
}
// Lightningの場合
$loop_action_point = 'lightning_loop_before';
add_action( $loop_action_point, 'my_display_archive_loop_before_widget_area' );