Make WordPress Core

Changeset 60666 for trunk


Ignore:
Timestamp:
08/26/2025 06:39:06 PM (12 months ago)
Author:
whyisjake
Message:

Upgrade/Install: Move Hello Dolly plugin to directory structure.

Changes the Hello Dolly plugin from a single file structure to a proper plugin directory structure, moving from hello.php to hello-dolly/hello.php to align with Plugin Handbook Best Practices.

  • Adds proper Text Domain: hello-dolly header to Hello Dolly plugin
  • Updates core files to remove special case handling for hello.php
  • Updates plugin dependency system to handle new directory structure
  • Adds upgrade routine to migrate active plugin references and keep plugin active
  • Updates all tests to use new plugin path format hello-dolly/hello.php
  • Updates build configuration and .gitignore for new directory structure
  • Adds hello.php to old files list for cleanup during core updates
  • Adds plugins/hello-dolly/ to new bundled directories list

Props afragen, SergeyBiryukov, peterwilsoncc, SirLouen, matt, davidbaumwald, desrosj, hellofromtonya, justinahinon,audrasjb, oglekler, whyisjake.
Fixes #53323.

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        11# Configuration files with possibly sensitive information
         2# Files and folders related to build/test tools
         3# Files for local environment config
         4.claude
         5.env
         6.git
        27.htaccess
        3 # Files and folders related to build/test tools
         8.phpcs.xml
        49.phpunit.result.cache
        5 phpunit.xml
        6 phpcs.xml
        7 .phpcs.xml
         10/docker-compose.override.yml
         11artifacts
         12build
         13composer.lock
         14coverage
         15jsdoc
        816node_modules
        917npm-debug.log
        10 build
         18packagehash.txt
         19phpcs.xml
         20phpunit.xml
         21vendor
        1122wp-cli.local.yml
        12 .git
        13 jsdoc
        14 composer.lock
        15 vendor
        16 packagehash.txt
        17 artifacts
        18 # Files for local environment config
        19 /docker-compose.override.yml
        20 .env
        21 coverage
  • trunk/.gitignore

    r59666 r60666  
    5151/src/wp-content/languages
    5252/src/wp-content/mu-plugins
    53 /src/wp-content/plugins
     53/src/wp-content/plugins/*
     54!/src/wp-content/plugins/hello-dolly
    5455/src/wp-content/themes/*
    5556!/src/wp-content/themes/twentyten
  • trunk/Gruntfile.js

    r60281 r60666  
    2929                        'wp-content/themes/twenty*/**',
    3030                        'wp-content/plugins/index.php',
    31                         'wp-content/plugins/hello.php',
     31                        'wp-content/plugins/hello-dolly/**',
    3232                        'wp-content/plugins/akismet/**',
    3333                        '!wp-content/themes/twenty*/node_modules/**',
  • trunk/src/wp-admin/includes/plugin.php

    r59488 r60666  
    154154                                }
    155155                        }
    156                 } elseif ( 'hello.php' === basename( $plugin_file ) ) {
    157                         $textdomain = 'default';
    158156                }
    159157                if ( $textdomain ) {
     
    10081006
    10091007                $plugin_slug = dirname( $plugin_file );
    1010 
    1011                 if ( 'hello.php' === $plugin_file ) {
    1012                         $plugin_slug = 'hello-dolly';
    1013                 }
    10141008
    10151009                // Remove language files, silently.
  • trunk/src/wp-admin/includes/update-core.php

    r60265 r60666  
    842842        'wp-includes/js/dist/fields.min.js',
    843843        'wp-includes/js/dist/fields.js',
     844        // 6.9
     845        'wp-content/plugins/hello.php',
    844846);
    845847
     
    974976        'themes/twentytwentyfour/'  => '6.4',
    975977        'themes/twentytwentyfive/'  => '6.7',
     978        'plugins/hello-dolly/'      => '6.9',
    976979);
    977980
  • trunk/src/wp-admin/includes/upgrade.php

    r60497 r60666  
    881881        if ( $wp_current_db_version < 58975 ) {
    882882                upgrade_670();
     883                upgrade_690();
    883884        }
    884885
     
    24152416        }
    24162417}
     2418
     2419/**
     2420 * Executes changes made in WordPress 6.9.0.
     2421 *
     2422 * @ignore
     2423 * @since 6.9.0
     2424 *
     2425 * @global int $wp_current_db_version The old (current) database version.
     2426 */
     2427function upgrade_690() {
     2428        global $wp_current_db_version;
     2429
     2430        // Switch Hello Dolly from file to directory format. See #53323
     2431        $active_plugins = get_option( 'active_plugins' );
     2432        $old_plugin     = 'hello.php';
     2433        $new_plugin     = 'hello-dolly/hello.php';
     2434        $key            = array_search( $old_plugin, $active_plugins, true );
     2435
     2436        if ( $key ) {
     2437                $active_plugins[ $key ] = $new_plugin;
     2438                update_option( 'active_plugins', $active_plugins );
     2439        }
     2440}
    24172441/**
    24182442 * Executes changes made in WordPress 6.7.0.
  • trunk/src/wp-content/plugins/hello.php

    r59943 r60666  
    1111Version: 1.7.2
    1212Author URI: http://ma.tt/
     13Text Domain: hello-dolly
    1314*/
    1415
  • trunk/src/wp-includes/class-wp-plugin-dependencies.php

    r60034 r60666  
    871871         */
    872872        protected static function convert_to_slug( $plugin_file ) {
    873                 if ( 'hello.php' === $plugin_file ) {
    874                         return 'hello-dolly';
    875                 }
    876873                return str_contains( $plugin_file, '/' ) ? dirname( $plugin_file ) : str_replace( '.php', '', $plugin_file );
    877874        }
  • trunk/tests/phpunit/tests/admin/includesPlugin.php

    r60253 r60666  
    2323
    2424        public function test_get_plugin_data() {
    25                 $data = get_plugin_data( DIR_TESTDATA . '/plugins/hello.php' );
     25                $data = get_plugin_data( DIR_TESTDATA . '/plugins/hello-dolly/hello.php' );
    2626
    2727                $default_headers = array(
     
    375375
    376376        public function test_is_plugin_active_true() {
    377                 activate_plugin( 'hello.php' );
    378                 $test = is_plugin_active( 'hello.php' );
     377                activate_plugin( 'hello-dolly/hello.php' );
     378                $test = is_plugin_active( 'hello-dolly/hello.php' );
    379379                $this->assertTrue( $test );
    380380
    381                 deactivate_plugins( 'hello.php' );
     381                deactivate_plugins( 'hello-dolly/hello.php' );
    382382        }
    383383
    384384        public function test_is_plugin_active_false() {
    385                 deactivate_plugins( 'hello.php' );
    386                 $test = is_plugin_active( 'hello.php' );
     385                deactivate_plugins( 'hello-dolly/hello.php' );
     386                $test = is_plugin_active( 'hello-dolly/hello.php' );
    387387                $this->assertFalse( $test );
    388388        }
    389389
    390390        public function test_is_plugin_inactive_true() {
    391                 deactivate_plugins( 'hello.php' );
    392                 $test = is_plugin_inactive( 'hello.php' );
     391                deactivate_plugins( 'hello-dolly/hello.php' );
     392                $test = is_plugin_inactive( 'hello-dolly/hello.php' );
    393393                $this->assertTrue( $test );
    394394        }
    395395
    396396        public function test_is_plugin_inactive_false() {
    397                 activate_plugin( 'hello.php' );
    398                 $test = is_plugin_inactive( 'hello.php' );
     397                activate_plugin( 'hello-dolly/hello.php' );
     398                $test = is_plugin_inactive( 'hello-dolly/hello.php' );
    399399                $this->assertFalse( $test );
    400400
    401                 deactivate_plugins( 'hello.php' );
     401                deactivate_plugins( 'hello-dolly/hello.php' );
    402402        }
    403403
     
    406406         */
    407407        public function test_get_plugin_files_single() {
    408                 $name = 'hello.php';
     408                $name = 'hello-dolly/hello.php';
    409409                $this->assertSame( array( $name ), get_plugin_files( $name ) );
    410410        }
     
    551551         */
    552552        public function test_is_network_only_plugin_hello() {
    553                 $this->assertFalse( is_network_only_plugin( 'hello.php' ) );
     553                $this->assertFalse( is_network_only_plugin( 'hello-dolly/hello.php' ) );
    554554        }
    555555
     
    571571         */
    572572        public function test_activate_plugins_single_no_array() {
    573                 $name = 'hello.php';
     573                $name = 'hello-dolly/hello.php';
    574574                activate_plugins( $name );
    575575                $this->assertTrue( is_plugin_active( $name ) );
     
    581581         */
    582582        public function test_activate_plugins_single_array() {
    583                 $name = 'hello.php';
     583                $name = 'hello-dolly/hello.php';
    584584                activate_plugins( array( $name ) );
    585585                $this->assertTrue( is_plugin_active( $name ) );
  • trunk/tests/phpunit/tests/admin/plugin-dependencies/hasDependents.php

    r57545 r60666  
    5454        public function test_should_convert_hellophp_to_hello_dolly() {
    5555                $this->set_property_value( 'dependency_slugs', array( 'hello-dolly' ) );
    56                 $this->assertTrue( self::$instance::has_dependents( 'hello.php' ) );
     56                $this->assertTrue( self::$instance::has_dependents( 'hello-dolly/hello.php' ) );
    5757        }
    5858}
  • trunk/tests/phpunit/tests/admin/plugin-dependencies/initialize.php

    r57658 r60666  
    282282                foreach ( $plugins as $plugin_file => &$headers ) {
    283283                        // Create the expected slugs.
    284                         if ( 'hello.php' === $plugin_file ) {
    285                                 $slug = 'hello-dolly';
    286                         } else {
    287                                 $slug = str_replace( '.php', '', explode( '/', $plugin_file )[0] );
    288                         }
     284                        $slug = str_replace( '.php', '', explode( '/', $plugin_file )[0] );
    289285
    290286                        $expected_slugs[ $plugin_file ] = $slug;
  • trunk/tests/phpunit/tests/ajax/wpAjaxUpdatePlugin.php

    r54723 r60666  
    139139
    140140                $_POST['_ajax_nonce'] = wp_create_nonce( 'updates' );
    141                 $_POST['plugin']      = 'hello.php';
     141                $_POST['plugin']      = 'hello-dolly/hello.php';
    142142                $_POST['slug']        = 'hello-dolly';
    143143
     
    164164                                'oldVersion'   => 'Version 1.7.2',
    165165                                'newVersion'   => '',
    166                                 'plugin'       => 'hello.php',
     166                                'plugin'       => 'hello-dolly/hello.php',
    167167                                'pluginName'   => 'Hello Dolly',
    168168                                'debug'        => array( 'The plugin is at the latest version.' ),
  • trunk/tests/phpunit/tests/dependencies/scripts.php

    r60295 r60666  
    26252625         */
    26262626        public function test_wp_enqueue_code_editor_when_php_file_will_be_passed() {
    2627                 $real_file              = WP_PLUGIN_DIR . '/hello.php';
     2627                $real_file              = WP_PLUGIN_DIR . '/hello-dolly/hello.php';
    26282628                $wp_enqueue_code_editor = wp_enqueue_code_editor( array( 'file' => $real_file ) );
    26292629                $this->assertNonEmptyMultidimensionalArray( $wp_enqueue_code_editor );
  • trunk/tests/phpunit/tests/multisite/network.php

    r60148 r60666  
    270270
    271271        public function test_active_network_plugins() {
    272                 $path = 'hello.php';
     272                $path = 'hello-dolly/hello.php';
    273273
    274274                // Local activate, should be invisible for the network.
     
    282282                activate_plugin( $path, '', true ); // Enable the plugin for all sites in the network.
    283283                $active_plugins = wp_get_active_network_plugins();
    284                 $this->assertSame( array( WP_PLUGIN_DIR . '/hello.php' ), $active_plugins );
     284                $this->assertSame( array( WP_PLUGIN_DIR . '/hello-dolly/hello.php' ), $active_plugins );
    285285
    286286                // Deactivate the plugin.
     
    301301         */
    302302        public function test_duplicate_network_active_plugin() {
    303                 $path = 'hello.php';
     303                $path = 'hello-dolly/hello.php';
    304304                $mock = new MockAction();
    305305                add_action( 'activate_' . $path, array( $mock, 'action' ) );
     
    321321
    322322        public function test_is_plugin_active_for_network_true() {
    323                 activate_plugin( 'hello.php', '', true );
    324                 $this->assertTrue( is_plugin_active_for_network( 'hello.php' ) );
     323                activate_plugin( 'hello-dolly/hello.php', '', true );
     324                $this->assertTrue( is_plugin_active_for_network( 'hello-dolly/hello.php' ) );
    325325        }
    326326
    327327        public function test_is_plugin_active_for_network_false() {
    328                 deactivate_plugins( 'hello.php', false, true );
    329                 $this->assertFalse( is_plugin_active_for_network( 'hello.php' ) );
     328                deactivate_plugins( 'hello-dolly/hello.php', false, true );
     329                $this->assertFalse( is_plugin_active_for_network( 'hello-dolly/hello.php' ) );
    330330        }
    331331
Note: See TracChangeset for help on using the changeset viewer.