@@ -54,10 +54,8 @@ class SiteGen {
5454 * Function to check capabilities
5555 */
5656 private static function check_capabilities () {
57- $ capability = new SiteCapabilities ();
58-
57+ $ capability = new SiteCapabilities ();
5958 $ sitegen_enabled = $ capability ->get ( 'hasAISiteGen ' );
60-
6159 return $ sitegen_enabled ;
6260 }
6361
@@ -426,8 +424,15 @@ public static function get_home_pages( $site_description, $content_style, $targe
426424 }
427425 $ parsed_response = json_decode ( wp_remote_retrieve_body ( $ response ), true );
428426 $ generated_content_structures = $ parsed_response ['contentStructures ' ];
429- $ generated_patterns = $ parsed_response ['generatedPatterns ' ];
430- $ generated_homepages = $ parsed_response ['pages ' ];
427+ // Ensure all content structures should have hero
428+ foreach ( $ generated_content_structures as $ home_slug => $ structure ) {
429+ if ( ! in_array ( 'hero ' , $ structure , true ) ) {
430+ array_splice ( $ structure , 1 , 0 , 'hero ' );
431+ $ generated_content_structures [ $ home_slug ] = $ structure ;
432+ }
433+ }
434+ $ generated_patterns = $ parsed_response ['generatedPatterns ' ];
435+ $ generated_homepages = $ parsed_response ['pages ' ];
431436 self ::cache_sitegen_response ( 'contentStructures ' , $ generated_content_structures );
432437 self ::cache_sitegen_response ( 'generatedPatterns ' , $ generated_patterns );
433438 self ::cache_sitegen_response ( 'homepages ' , $ generated_homepages );
@@ -437,6 +442,7 @@ public static function get_home_pages( $site_description, $content_style, $targe
437442 $ generated_homepages = array ();
438443 $ generated_patterns = self ::get_sitegen_from_cache ( 'generatedPatterns ' );
439444
445+ $ dalle_used = false ;
440446 $ categories_to_separate = array ( 'header ' , 'footer ' );
441447 // Choose random categories for the generated patterns and return
442448 foreach ( $ random_homepages as $ homepage_index => $ slug ) {
@@ -452,6 +458,16 @@ public static function get_home_pages( $site_description, $content_style, $targe
452458 $ pattern_index = ( $ regenerate ) ? array_rand ( $ generated_patterns [ $ pattern_category ] ) : $ homepage_index ;
453459 $ random_pattern = $ generated_patterns [ $ pattern_category ][ $ pattern_index ];
454460
461+ // Check if this is a hero pattern and we are at end of homepages without ever using dalle
462+ if ( ! $ dalle_used && count ( $ random_homepages ) === $ homepage_index && 'hero ' === $ pattern_category ) {
463+ // Chose the dalle hero only
464+ foreach ( $ generated_patterns [ $ pattern_category ] as $ gen_hero ) {
465+ if ( ! empty ( $ gen_hero ['dalleImages ' ] ) ) {
466+ $ random_pattern = $ gen_hero ;
467+ }
468+ }
469+ }
470+
455471 if ( in_array ( $ pattern_category , $ categories_to_separate , true ) ) {
456472 $ homepage_patterns [ $ pattern_category ] = $ random_pattern ['replacedPattern ' ];
457473 } else {
@@ -460,6 +476,7 @@ public static function get_home_pages( $site_description, $content_style, $targe
460476
461477 if ( ! empty ( $ random_pattern ['dalleImages ' ] ) ) {
462478 $ homepage_patterns ['generatedImages ' ] = $ random_pattern ['dalleImages ' ];
479+ $ dalle_used = true ;
463480 }
464481 }
465482 $ generated_homepages [ $ slug ] = $ homepage_patterns ;
0 commit comments