!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.3.27 

uname -a: Linux pdx1-shared-a4-04 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64 

uid=6659440(dh_z2jmpm) gid=2086089(pg10499364) groups=2086089(pg10499364)  

Safe-mode: OFF (not secure)

/usr/local/wp/vendor/wp-cli/extension-command/src/   drwxr-xr-x
Free 719.36 GB of 879.6 GB (81.78%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Theme_Command.php (25.97 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

use WP_CLI\CommandWithUpgrade;
use WP_CLI\ParseThemeNameInput;
use WP_CLI\Utils;

/**
 * Manages themes, including installs, activations, and updates.
 *
 * See the WordPress [Theme Handbook](https://developer.wordpress.org/themes/) developer resource for more information on themes.
 *
 * ## EXAMPLES
 *
 *     # Install the latest version of a theme from wordpress.org and activate
 *     $ wp theme install twentysixteen --activate
 *     Installing Twenty Sixteen (1.2)
 *     Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip...
 *     Unpacking the package...
 *     Installing the theme...
 *     Theme installed successfully.
 *     Activating 'twentysixteen'...
 *     Success: Switched to 'Twenty Sixteen' theme.
 *     Success: Installed 1 of 1 themes.
 *
 *     # Get details of an installed theme
 *     $ wp theme get twentysixteen --fields=name,title,version
 *     +---------+----------------+
 *     | Field   | Value          |
 *     +---------+----------------+
 *     | name    | Twenty Sixteen |
 *     | title   | Twenty Sixteen |
 *     | version | 1.2            |
 *     +---------+----------------+
 *
 *     # Get status of theme
 *     $ wp theme status twentysixteen
 *     Theme twentysixteen details:
 *          Name: Twenty Sixteen
 *          Status: Active
 *          Version: 1.2
 *          Author: the WordPress team
 *
 * @package wp-cli
 */
class Theme_Command extends CommandWithUpgrade {

    use ParseThemeNameInput;

    protected $item_type         = 'theme';
    protected $upgrade_refresh   = 'wp_update_themes';
    protected $upgrade_transient = 'update_themes';

    protected $obj_fields = [
        'name',
        'status',
        'update',
        'version',
        'update_version',
        'auto_update',
    ];

    public function __construct() {
        if ( is_multisite() ) {
            $this->obj_fields[] = 'enabled';
        }
        parent::__construct();

        $this->fetcher = new WP_CLI\Fetchers\Theme();
    }

    protected function get_upgrader_class( $force ) {
        return $force ? '\\WP_CLI\\DestructiveThemeUpgrader' : 'Theme_Upgrader';
    }

    /**
     * Reveals the status of one or all themes.
     *
     * ## OPTIONS
     *
     * [<theme>]
     * : A particular theme to show the status for.
     *
     * ## EXAMPLES
     *
     *     $ wp theme status twentysixteen
     *     Theme twentysixteen details:
     *          Name: Twenty Sixteen
     *          Status: Inactive
     *          Version: 1.2
     *          Author: the WordPress team
     */
    public function status( $args ) {
        if ( isset( $args[0] ) ) {
            $theme  = $this->fetcher->get_check( $args[0] );
            $errors = $theme->errors();
            if ( is_wp_error( $errors ) ) {
                $message = $errors->get_error_message();
                WP_CLI::error( $message );
            }
        }

        parent::status( $args );
    }

    /**
     * Searches the WordPress.org theme directory.
     *
     * Displays themes in the WordPress.org theme directory matching a given
     * search query.
     *
     * ## OPTIONS
     *
     * <search>
     * : The string to search for.
     *
     * [--page=<page>]
     * : Optional page to display.
     * ---
     * default: 1
     * ---
     *
     * [--per-page=<per-page>]
     * : Optional number of results to display. Defaults to 10.
     *
     * [--field=<field>]
     * : Prints the value of a single field for each theme.
     *
     * [--fields=<fields>]
     * : Ask for specific fields from the API. Defaults to name,slug,author,rating. Acceptable values:
     *
     *     **name**: Theme Name
     *     **slug**: Theme Slug
     *     **version**: Current Version Number
     *     **author**: Theme Author
     *     **preview_url**: Theme Preview URL
     *     **screenshot_url**: Theme Screenshot URL
     *     **rating**: Theme Rating
     *     **num_ratings**: Number of Theme Ratings
     *     **homepage**: Theme Author's Homepage
     *     **description**: Theme Description
     *     **url**: Theme's URL on wordpress.org
     *
     * [--format=<format>]
     * : Render output in a particular format.
     * ---
     * default: table
     * options:
     *   - table
     *   - csv
     *   - json
     *   - count
     *   - yaml
     * ---
     *
     * ## EXAMPLES
     *
     *     $ wp theme search photo --per-page=6
     *     Success: Showing 6 of 203 themes.
     *     +----------------------+----------------------+--------+
     *     | name                 | slug                 | rating |
     *     +----------------------+----------------------+--------+
     *     | Photos               | photos               | 100    |
     *     | Infinite Photography | infinite-photography | 100    |
     *     | PhotoBook            | photobook            | 100    |
     *     | BG Photo Frame       | bg-photo-frame       | 0      |
     *     | fPhotography         | fphotography         | 0      |
     *     | Photo Perfect        | photo-perfect        | 98     |
     *     +----------------------+----------------------+--------+
     */
    public function search( $args, $assoc_args ) {
        parent::_search( $args, $assoc_args );
    }

    protected function status_single( $args ) {
        $theme = $this->fetcher->get_check( $args[0] );

        $status = $this->format_status( $this->get_status( $theme ), 'long' );

        $version = $theme->get( 'Version' );
        if ( $this->has_update( $theme->get_stylesheet() ) ) {
            $version .= ' (%gUpdate available%n)';
        }

        echo WP_CLI::colorize(
            Utils\mustache_render(
                self::get_template_path( 'theme-status.mustache' ),
                [
                    'slug'    => $theme->get_stylesheet(),
                    'status'  => $status,
                    'version' => $version,
                    'name'    => $theme->get( 'Name' ),
                    'author'  => $theme->get( 'Author' ),
                ]
            )
        );
    }

    protected function get_all_items() {
        return $this->get_item_list();
    }

    /**
     * Activates a theme.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The theme to activate.
     *
     * ## EXAMPLES
     *
     *     $ wp theme activate twentysixteen
     *     Success: Switched to 'Twenty Sixteen' theme.
     */
    public function activate( $args = array() ) {
        $theme = $this->fetcher->get_check( $args[0] );

        $errors = $theme->errors();
        if ( is_wp_error( $errors ) ) {
            $message = $errors->get_error_message();
            WP_CLI::error( $message );
        }

        $name = $theme->get( 'Name' );

        if ( 'active' === $this->get_status( $theme ) ) {
            WP_CLI::warning( "The '$name' theme is already active." );
            return;
        }

        if ( $theme->get_stylesheet() !== $theme->get_template() && ! $this->fetcher->get( $theme->get_template() ) ) {
            WP_CLI::error( "The '{$theme->get_stylesheet()}' theme cannot be activated without its parent, '{$theme->get_template()}'." );
        }

        switch_theme( $theme->get_template(), $theme->get_stylesheet() );

        if ( $this->is_active_theme( $theme ) ) {
            WP_CLI::success( "Switched to '$name' theme." );
        } else {
            WP_CLI::error( "Could not switch to '$name' theme." );
        }
    }

    /**
     * Enables a theme on a WordPress multisite install.
     *
     * Permits theme to be activated from the dashboard of a site on a WordPress
     * multisite install.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The theme to enable.
     *
     * [--network]
     * : If set, the theme is enabled for the entire network
     *
     * [--activate]
     * : If set, the theme is activated for the current site. Note that
     * the "network" flag has no influence on this.
     *
     * ## EXAMPLES
     *
     *     # Enable theme
     *     $ wp theme enable twentysixteen
     *     Success: Enabled the 'Twenty Sixteen' theme.
     *
     *     # Network enable theme
     *     $ wp theme enable twentysixteen --network
     *     Success: Network enabled the 'Twenty Sixteen' theme.
     *
     *     # Network enable and activate theme for current site
     *     $ wp theme enable twentysixteen --activate
     *     Success: Enabled the 'Twenty Sixteen' theme.
     *     Success: Switched to 'Twenty Sixteen' theme.
     */
    public function enable( $args, $assoc_args ) {
        if ( ! is_multisite() ) {
            WP_CLI::error( 'This is not a multisite installation.' );
        }

        $theme = $this->fetcher->get_check( $args[0] );
        $name  = $theme->get( 'Name' );

        # If the --network flag is set, we'll be calling the (get|update)_site_option functions
        $_site = ! empty( $assoc_args['network'] ) ? '_site' : '';

        # Add the current theme to the allowed themes option or site option
        $allowed_themes = call_user_func( "get{$_site}_option", 'allowedthemes' );
        if ( empty( $allowed_themes ) ) {
            $allowed_themes = array();
        }
        $allowed_themes[ $theme->get_stylesheet() ] = true;
        call_user_func( "update{$_site}_option", 'allowedthemes', $allowed_themes );

        if ( ! empty( $assoc_args['network'] ) ) {
            WP_CLI::success( "Network enabled the '$name' theme." );
        } else {
            WP_CLI::success( "Enabled the '$name' theme." );
        }

        # If the --activate flag is set, activate the theme for the current site
        if ( ! empty( $assoc_args['activate'] ) ) {
            $this->activate( $args );
        }
    }

    /**
     * Disables a theme on a WordPress multisite install.
     *
     * Removes ability for a theme to be activated from the dashboard of a site
     * on a WordPress multisite install.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The theme to disable.
     *
     * [--network]
     * : If set, the theme is disabled on the network level. Note that
     * individual sites may still have this theme enabled if it was
     * enabled for them independently.
     *
     * ## EXAMPLES
     *
     *     # Disable theme
     *     $ wp theme disable twentysixteen
     *     Success: Disabled the 'Twenty Sixteen' theme.
     *
     *     # Disable theme in network level
     *     $ wp theme disable twentysixteen --network
     *     Success: Network disabled the 'Twenty Sixteen' theme.
     */
    public function disable( $args, $assoc_args ) {
        if ( ! is_multisite() ) {
            WP_CLI::error( 'This is not a multisite installation.' );
        }

        $theme = $this->fetcher->get_check( $args[0] );
        $name  = $theme->get( 'Name' );

        # If the --network flag is set, we'll be calling the (get|update)_site_option functions
        $_site = ! empty( $assoc_args['network'] ) ? '_site' : '';

        # Add the current theme to the allowed themes option or site option
        $allowed_themes = call_user_func( "get{$_site}_option", 'allowedthemes' );
        if ( ! empty( $allowed_themes[ $theme->get_stylesheet() ] ) ) {
            unset( $allowed_themes[ $theme->get_stylesheet() ] );
        }
        call_user_func( "update{$_site}_option", 'allowedthemes', $allowed_themes );

        if ( ! empty( $assoc_args['network'] ) ) {
            WP_CLI::success( "Network disabled the '$name' theme." );
        } else {
            WP_CLI::success( "Disabled the '$name' theme." );
        }
    }

    /**
     * Gets the path to a theme or to the theme directory.
     *
     * ## OPTIONS
     *
     * [<theme>]
     * : The theme to get the path to. Path includes "style.css" file.
     * If not set, will return the path to the themes directory.
     *
     * [--dir]
     * : If set, get the path to the closest parent directory, instead of the
     * theme's "style.css" file.
     *
     * ## EXAMPLES
     *
     *     # Get theme path
     *     $ wp theme path
     *     /var/www/example.com/public_html/wp-content/themes
     *
     *     # Change directory to theme path
     *     $ cd $(wp theme path)
     */
    public function path( $args, $assoc_args ) {
        if ( empty( $args ) ) {
            $path = WP_CONTENT_DIR . '/themes';
        } else {
            $theme = $this->fetcher->get_check( $args[0] );

            $path = $theme->get_stylesheet_directory();

            if ( ! Utils\get_flag_value( $assoc_args, 'dir' ) ) {
                $path .= '/style.css';
            }
        }

        WP_CLI::line( $path );
    }

    protected function install_from_repo( $slug, $assoc_args ) {
        global $wp_version;
        // Extract the major WordPress version (e.g., "6.3") from the full version string
        list($wp_core_version) = explode( '-', $wp_version );
        $wp_core_version       = implode( '.', array_slice( explode( '.', $wp_core_version ), 0, 2 ) );

        $api = themes_api( 'theme_information', array( 'slug' => $slug ) );

        if ( is_wp_error( $api ) ) {
            return $api;
        }

        if ( isset( $assoc_args['version'] ) ) {
            self::alter_api_response( $api, $assoc_args['version'] );
        } elseif ( ! Utils\get_flag_value( $assoc_args, 'ignore-requirements', false ) ) {
            $requires_php = isset( $api->requires_php ) ? $api->requires_php : null;
            $requires_wp  = isset( $api->requires ) ? $api->requires : null;

            $compatible_php = empty( $requires_php ) || version_compare( PHP_VERSION, $requires_php, '>=' );
            $compatible_wp  = empty( $requires_wp ) || version_compare( $wp_core_version, $requires_wp, '>=' );

            if ( ! $compatible_wp ) {
                return new WP_Error( 'requirements_not_met', "This theme does not work with your version of WordPress. Minimum WordPress requirement is $requires_wp" );
            }

            if ( ! $compatible_php ) {
                return new WP_Error( 'requirements_not_met', "This theme does not work with your version of PHP. Minimum PHP required is $requires_php" );
            }
        }

        if ( ! Utils\get_flag_value( $assoc_args, 'force' ) ) {
            $theme = wp_get_theme( $slug );
            if ( $theme->exists() ) {
                // We know this will fail, so avoid a needless download of the package.
                return new WP_Error( 'already_installed', 'Theme already installed.' );
            }
            // Clear cache so WP_Theme doesn't create a "missing theme" object.
            $cache_hash = md5( $theme->theme_root . '/' . $theme->stylesheet );
            foreach ( [ 'theme', 'screenshot', 'headers', 'page_templates' ] as $key ) {
                wp_cache_delete( $key . '-' . $cache_hash, 'themes' );
            }
        }

        WP_CLI::log( sprintf( 'Installing %s (%s)', html_entity_decode( $api->name, ENT_QUOTES ), $api->version ) );
        if ( Utils\get_flag_value( $assoc_args, 'version' ) !== 'dev' ) {
            WP_CLI::get_http_cache_manager()->whitelist_package( $api->download_link, $this->item_type, $api->slug, $api->version );
        }

        // Ignore failures on accessing SSL "https://api.wordpress.org/themes/update-check/1.1/" in `wp_update_themes()` which seem to occur intermittently.
        set_error_handler( array( __CLASS__, 'error_handler' ), E_USER_WARNING | E_USER_NOTICE );

        $result = $this->get_upgrader( $assoc_args )->install( $api->download_link );

        restore_error_handler();

        return $result;
    }

    protected function get_item_list() {
        return $this->get_all_themes();
    }

    protected function filter_item_list( $items, $args ) {
        $theme_files = array();
        foreach ( $args as $arg ) {
            $theme_files[] = $this->fetcher->get_check( $arg )->get_stylesheet();
        }

        return Utils\pick_fields( $items, $theme_files );
    }

    /**
     * Installs one or more themes.
     *
     * ## OPTIONS
     *
     * <theme|zip|url>...
     * : One or more themes to install. Accepts a theme slug, the path to a local zip file, or a URL to a remote zip file.
     *
     * [--version=<version>]
     * : If set, get that particular version from wordpress.org, instead of the
     * stable version.
     *
     * [--force]
     * : If set, the command will overwrite any installed version of the theme, without prompting
     * for confirmation.
     *
     * [--ignore-requirements]
     * : If set, the command will install the theme while ignoring any WordPress or PHP version requirements
     * specified by the theme authors.
     *
     * [--activate]
     * : If set, the theme will be activated immediately after install.
     *
     * [--insecure]
     * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
     *
     * ## EXAMPLES
     *
     *     # Install the latest version from wordpress.org and activate
     *     $ wp theme install twentysixteen --activate
     *     Installing Twenty Sixteen (1.2)
     *     Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip...
     *     Unpacking the package...
     *     Installing the theme...
     *     Theme installed successfully.
     *     Activating 'twentysixteen'...
     *     Success: Switched to 'Twenty Sixteen' theme.
     *     Success: Installed 1 of 1 themes.
     *
     *     # Install from a local zip file
     *     $ wp theme install ../my-theme.zip
     *
     *     # Install from a remote zip file
     *     $ wp theme install http://s3.amazonaws.com/bucketname/my-theme.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
     */
    public function install( $args, $assoc_args ) {
        if ( count( $args ) > 1 && Utils\get_flag_value( $assoc_args, 'activate', false ) ) {
            WP_CLI::warning( sprintf( 'Only this single theme will be activated: %s', end( $args ) ) );
            reset( $args );
        }

        $theme_root = get_theme_root();
        if ( $theme_root && ! is_dir( $theme_root ) ) {
            wp_mkdir_p( $theme_root );
            register_theme_directory( $theme_root );
        }

        parent::install( $args, $assoc_args );
    }

    /**
     * Gets details about a theme.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The theme to get.
     *
     * [--field=<field>]
     * : Instead of returning the whole theme, returns the value of a single field.
     *
     * [--fields=<fields>]
     * : Limit the output to specific fields. Defaults to all fields.
     *
     * [--format=<format>]
     * : Render output in a particular format.
     * ---
     * default: table
     * options:
     *   - table
     *   - csv
     *   - json
     *   - yaml
     * ---
     *
     * ## EXAMPLES
     *
     *     $ wp theme get twentysixteen --fields=name,title,version
     *     +---------+----------------+
     *     | Field   | Value          |
     *     +---------+----------------+
     *     | name    | Twenty Sixteen |
     *     | title   | Twenty Sixteen |
     *     | version | 1.2            |
     *     +---------+----------------+
     */
    public function get( $args, $assoc_args ) {
        $theme = $this->fetcher->get_check( $args[0] );

        $errors = $theme->errors();
        if ( is_wp_error( $errors ) ) {
            $message = $errors->get_error_message();
            WP_CLI::error( $message );
        }

        // WP_Theme object employs magic getter, unfortunately.
        $theme_vars = [
            'name',
            'title',
            'version',
            'status',
            'parent_theme',
            'template_dir',
            'stylesheet_dir',
            'template',
            'stylesheet',
            'screenshot',
            'description',
            'author',
            'tags',
            'theme_root',
            'theme_root_uri',
        ];
        $theme_obj  = new stdClass();
        foreach ( $theme_vars as $var ) {
            $theme_obj->$var = $theme->$var;
        }

        $theme_obj->status      = $this->get_status( $theme );
        $theme_obj->description = wordwrap( $theme_obj->description );

        if ( empty( $assoc_args['fields'] ) ) {
            $assoc_args['fields'] = $theme_vars;
        }

        $formatter = $this->get_formatter( $assoc_args );
        $formatter->display_item( $theme_obj );
    }

    /**
     * Updates one or more themes.
     *
     * ## OPTIONS
     *
     * [<theme>...]
     * : One or more themes to update.
     *
     * [--all]
     * : If set, all themes that have updates will be updated.
     *
     * [--exclude=<theme-names>]
     * : Comma separated list of theme names that should be excluded from updating.
     *
     * [--minor]
     * : Only perform updates for minor releases (e.g. from 1.3 to 1.4 instead of 2.0)
     *
     * [--patch]
     * : Only perform updates for patch releases (e.g. from 1.3 to 1.3.3 instead of 1.4)
     *
     * [--format=<format>]
     * : Render output in a particular format.
     * ---
     * default: table
     * options:
     *   - table
     *   - csv
     *   - json
     *   - summary
     * ---
     *
     * [--version=<version>]
     * : If set, the theme will be updated to the specified version.
     *
     * [--dry-run]
     * : Preview which themes would be updated.
     *
     * [--insecure]
     * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
     *
     * ## EXAMPLES
     *
     *     # Update multiple themes
     *     $ wp theme update twentyfifteen twentysixteen
     *     Downloading update from https://downloads.wordpress.org/theme/twentyfifteen.1.5.zip...
     *     Unpacking the update...
     *     Installing the latest version...
     *     Removing the old version of the theme...
     *     Theme updated successfully.
     *     Downloading update from https://downloads.wordpress.org/theme/twentysixteen.1.2.zip...
     *     Unpacking the update...
     *     Installing the latest version...
     *     Removing the old version of the theme...
     *     Theme updated successfully.
     *     +---------------+-------------+-------------+---------+
     *     | name          | old_version | new_version | status  |
     *     +---------------+-------------+-------------+---------+
     *     | twentyfifteen | 1.4         | 1.5         | Updated |
     *     | twentysixteen | 1.1         | 1.2         | Updated |
     *     +---------------+-------------+-------------+---------+
     *     Success: Updated 2 of 2 themes.
     *
     *     # Exclude themes updates when bulk updating the themes
     *     $ wp theme update --all --exclude=twentyfifteen
     *     Downloading update from https://downloads.wordpress.org/theme/astra.1.0.5.1.zip...
     *     Unpacking the update...
     *     Installing the latest version...
     *     Removing the old version of the theme...
     *     Theme updated successfully.
     *     Downloading update from https://downloads.wordpress.org/theme/twentyseventeen.1.2.zip...
     *     Unpacking the update...
     *     Installing the latest version...
     *     Removing the old version of the theme...
     *     Theme updated successfully.
     *     +-----------------+----------+---------+----------------+
     *     | name            | status   | version | update_version |
     *     +-----------------+----------+---------+----------------+
     *     | astra           | inactive | 1.0.1   | 1.0.5.1        |
     *     | twentyseventeen | inactive | 1.1     | 1.2            |
     *     +-----------------+----------+---------+----------------+
     *     Success: Updated 2 of 2 themes.
     *
     *     # Update all themes
     *     $ wp theme update --all
     *
     * @alias upgrade
     */
    public function update( $args, $assoc_args ) {
        $all = Utils\get_flag_value( $assoc_args, 'all', false );

        $args = $this->check_optional_args_and_all( $args, $all );
        if ( ! $args ) {
            return;
        }

        if ( isset( $assoc_args['version'] ) && isset( $assoc_args['dry-run'] ) ) {
            WP_CLI::error( '--dry-run cannot be used together with --version.' );
        }

        if ( isset( $assoc_args['version'] ) ) {
            foreach ( $this->fetcher->get_many( $args ) as $theme ) {
                $assoc_args['force'] = true;
                $this->install( array( $theme->stylesheet ), $assoc_args );
            }
        } else {
            parent::update_many( $args, $assoc_args );
        }
    }

    /**
     * Checks if a given theme is installed.
     *
     * Returns exit code 0 when installed, 1 when uninstalled.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The theme to check.
     *
     * ## EXAMPLES
     *
     *     # Check whether theme is installed; exit status 0 if installed, otherwise 1
     *     $ wp theme is-installed hello
     *     $ echo $?
     *     1
     *
     * @subcommand is-installed
     */
    public function is_installed( $args, $assoc_args = array() ) {
        $theme = wp_get_theme( $args[0] );

        if ( $theme->exists() ) {
            WP_CLI::halt( 0 );
        } else {
            WP_CLI::halt( 1 );
        }
    }

    /**
     * Checks if a given theme is active.
     *
     * Returns exit code 0 when active, 1 when not active.
     *
     * ## OPTIONS
     *
     * <theme>
     * : The plugin to check.
     *
     * ## EXAMPLES
     *
     *     # Check whether theme is Active; exit status 0 if active, otherwise 1
     *     $ wp theme is-active twentyfifteen
     *     $ echo $?
     *     1
     *
     * @subcommand is-active
     */
    public function is_active( $args, $assoc_args = array() ) {
        $theme = wp_get_theme( $args[0] );

        if ( ! $theme->exists() ) {
            WP_CLI::halt( 1 );
        }

        $this->is_active_theme( $theme ) || $this->is_active_parent_theme( $theme ) ? WP_CLI::halt( 0 ) : WP_CLI::halt( 1 );
    }

    /**
     * Deletes one or more themes.
     *
     * Removes the theme or themes from the filesystem.
     *
     * ## OPTIONS
     *
     * [<theme>...]
     * : One or more themes to delete.
     *
     * [--all]
     * : If set, all themes will be deleted except active theme.
     *
     * [--force]
     * : To delete active theme use this.
     *
     * ## EXAMPLES
     *
     *     $ wp theme delete twentytwelve
     *     Deleted 'twentytwelve' theme.
     *     Success: Deleted 1 of 1 themes.
     *
     * @alias uninstall
     */
    public function delete( $args, $assoc_args ) {

        $all = Utils\get_flag_value( $assoc_args, 'all', false );

        $args = $this->check_optional_args_and_all( $args, $all, 'delete' );
        if ( ! $args ) {
            return;
        }

        $force = Utils\get_flag_value( $assoc_args, 'force', false );

        $successes = 0;
        $errors    = 0;
        foreach ( $this->fetcher->get_many( $args ) as $theme ) {
            $theme_slug = $theme->get_stylesheet();

            if ( $this->is_active_theme( $theme ) && ! $force ) {
                if ( ! $all ) {
                    WP_CLI::warning( "Can't delete the currently active theme: $theme_slug" );
                    ++$errors;
                }
                continue;
            }

            if ( $this->is_active_parent_theme( $theme ) && ! $force ) {
                if ( ! $all ) {
                    WP_CLI::warning( "Can't delete the parent of the currently active theme: $theme_slug" );
                    ++$errors;
                }
                continue;
            }

            $r = delete_theme( $theme_slug );

            if ( is_wp_error( $r ) ) {
                WP_CLI::warning( $r );
                ++$errors;
            } else {
                WP_CLI::log( "Deleted '$theme_slug' theme." );
                ++$successes;
            }
        }
        if ( ! $this->chained_command ) {
            Utils\report_batch_operation_results( 'theme', 'delete', count( $args ), $successes, $errors );
        }
    }

    /**
     * Gets a list of themes.
     *
     * ## OPTIONS
     *
     * [--<field>=<value>]
     * : Filter results based on the value of a field.
     *
     * [--field=<field>]
     * : Prints the value of a single field for each theme.
     *
     * [--fields=<fields>]
     * : Limit the output to specific object fields.
     *
     * [--format=<format>]
     * : Render output in a particular format.
     * ---
     * default: table
     * options:
     *   - table
     *   - csv
     *   - json
     *   - count
     *   - yaml
     * ---
     *
     * [--status=<status>]
     * : Filter the output by theme status.
     * ---
     * options:
     *   - active
     *   - parent
     *   - inactive
     * ---
     *
     * [--skip-update-check]
     * : If set, the theme update check will be skipped.
     *
     * ## AVAILABLE FIELDS
     *
     * These fields will be displayed by default for each theme:
     *
     * * name
     * * status
     * * update
     * * version
     * * update_version
     * * auto_update
     *
     * These fields are optionally available:
     *
     * * update_package
     * * update_id
     * * title
     * * description
     *
     * ## EXAMPLES
     *
     *     # List inactive themes.
     *     $ wp theme list --status=inactive --format=csv
     *     name,status,update,version,update_version,auto_update
     *     twentyfourteen,inactive,none,3.8,,off
     *     twentysixteen,inactive,available,3.0,3.1,off
     *
     * @subcommand list
     */
    public function list_( $_, $assoc_args ) {
        parent::_list( $_, $assoc_args );
    }

    /**
     * Gets the template path based on installation type.
     */
    private static function get_template_path( $template ) {
        $command_root  = Utils\phar_safe_path( dirname( __DIR__ ) );
        $template_path = "{$command_root}/templates/{$template}";

        if ( ! file_exists( $template_path ) ) {
            WP_CLI::error( "Couldn't find {$template}" );
        }

        return $template_path;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.013 ]--