Changeset 10480
- Timestamp:
- 12/02/2020 04:24:34 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wp-themes.com/public_html/wp-content/mu-plugins/pub/starter-content.php
r10450 r10480 15 15 private $mapping = array(); 16 16 17 public function __construct() { 18 // This plugin relies upon the object cache being the internal WordPress per-request cache. 19 if ( wp_using_ext_object_cache() ) { 20 return; 21 } 22 23 // Some themes require is_customize_preview() before loading starter content. 24 add_action( 'after_setup_theme', array( $this, 'pre_after_setup_theme' ), -1 * PHP_INT_MAX ); 25 26 add_action( 'init', array( $this, 'init' ) ); 27 add_action( 'wp_head', array( $this, 'head_debug_info' ), 1 ); 28 } 29 30 public function pre_after_setup_theme() { 31 if ( class_exists( 'WP_Customize_Manager' ) ) { 32 return; 33 } 34 35 if ( ! $this->is_supported_theme() ) { 36 return; 37 } 38 39 // Disable customizer loading parameters. 40 unset( 41 $_REQUEST['wp_customize'], 42 $_REQUEST['customize_changeset_uuid'], 43 $_GET['customize_changeset_uuid'], 44 $_POST['customize_changeset_uuid'] 45 ); 46 47 // Define a custom `WP_Customize_Manager` class to force `is_customize_preview()` truthful. 48 polyfill_wp_customize_manager(); 49 50 $GLOBALS['wp_customize'] = new WP_Customize_Manager(); 51 52 // Undo this the override after this action is fully run. 53 add_action( 54 'after_setup_theme', 55 function() { 56 unset( $GLOBALS['wp_customize'] ); 57 }, 58 PHP_INT_MAX 59 ); 60 } 61 62 private function is_supported_theme() { 63 $whitelisted_themes = array( 64 // Other default themes don't have supported starter content. 65 'twentyseventeen', 66 'twentytwenty', 67 'twentytwentyone', 68 ); 69 70 return in_array( get_template(), $whitelisted_themes ); 71 } 72 17 73 public function init() { 74 if ( ! $this->is_supported_theme() ) { 75 return; 76 } 77 18 78 $this->set_starter_content(); 19 79 … … 30 90 $this->filter_sidebars(); 31 91 $this->filter_theme_mods(); 92 } 93 94 public function head_debug_info() { 95 if ( current_theme_supports( 'starter-content' ) && $this->starter_content ) { 96 echo "\n<!-- Preview using Starter content -->\n"; 97 } else { 98 echo "\n<!-- Preview is not using Starter content -->\n"; 99 } 100 32 101 } 33 102 … … 442 511 } 443 512 444 add_action( 445 'init', 446 function () { 447 // This plugin relies upon the object cache being the internal WordPress per-request cache. 448 if ( wp_using_ext_object_cache() ) { 449 return; 450 } 451 452 $whitelisted_themes = array( 453 // Other default themes don't have supported starter content. 454 'twentyseventeen', 455 'twentytwenty', 456 'twentytwentyone', 457 ); 458 459 if ( ! in_array( get_template(), $whitelisted_themes ) ) { 460 return; 461 } 462 463 // These themes don't always load the starter content, so we'll have to do it for them.. 464 if ( 'twentytwenty' === get_template() ) { 465 require_once get_template_directory() . '/inc/starter-content.php'; 466 add_theme_support( 'starter-content', twentytwenty_get_starter_content() ); 467 } elseif ( 'twentytwentyone' === get_template() ) { 468 require_once get_template_directory() . '/inc/starter-content.php'; 469 add_theme_support( 'starter-content', twenty_twenty_one_get_starter_content() ); 470 } 471 472 ( new Starter_Content() )->init(); 473 } 474 ); 513 new Starter_Content(); 514 515 /** 516 * Define a custom WP_Customize_Manager class that claims this request is a customizer preview request. 517 * 518 * This is needed as many themes (including 2020/2021) limit starter content to customizer preview requests. 519 * 520 * As PHP cannot handle nested classes, this is defined in a function outside of the above class. 521 */ 522 function polyfill_wp_customize_manager() { 523 class WP_Customize_Manager { 524 // Yes, this is a theme preview. 525 function is_preview() { 526 return true; 527 } 528 529 // Ensure that any calls return false too. 530 function __get( $property ) { 531 return false; 532 } 533 function __call( $method, $args ) { 534 return false; 535 } 536 } 537 538 // This needs to be defined in the global namespace. 539 class_alias( __NAMESPACE__ . '\WP_Customize_Manager', 'WP_Customize_Manager', false ); 540 }
Note: See TracChangeset
for help on using the changeset viewer.