...] * : One or more mods to get. * * [--field=] * : Returns the value of a single field. * * [--all] * : List all theme mods * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * --- * * ## EXAMPLES * * # Get all theme mods. * $ wp theme mod get --all * +------------------+---------+ * | key | value | * +------------------+---------+ * | background_color | dd3333 | * | link_color | #dd9933 | * | main_text_color | #8224e3 | * +------------------+---------+ * * # Get single theme mod in JSON format. * $ wp theme mod get background_color --format=json * [{"key":"background_color","value":"dd3333"}] * * # Get value of a single theme mod. * $ wp theme mod get background_color --field=value * dd3333 * * # Get multiple theme mods. * $ wp theme mod get background_color header_textcolor * +------------------+--------+ * | key | value | * +------------------+--------+ * | background_color | dd3333 | * | header_textcolor | | * +------------------+--------+ */ public function get( $args = array(), $assoc_args = array() ) { if ( ! \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( 'You must specify at least one mod or use --all.' ); } if ( \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) ) { $args = array(); } $list = array(); $mods = get_theme_mods(); if ( ! is_array( $mods ) ) { // If no mods are set (perhaps new theme), make sure foreach still works. $mods = array(); } foreach ( $mods as $k => $v ) { // If mods were given, skip the others. if ( ! empty( $args ) && ! in_array( $k, $args, true ) ) { continue; } if ( is_array( $v ) ) { $list[] = [ 'key' => $k, 'value' => '=>', ]; foreach ( $v as $_k => $_v ) { $list[] = [ 'key' => " $_k", 'value' => $_v, ]; } } else { $list[] = [ 'key' => $k, 'value' => $v, ]; } } // For unset mods, show blank value. foreach ( $args as $mod ) { if ( ! isset( $mods[ $mod ] ) ) { $list[] = [ 'key' => $mod, 'value' => '', ]; } } $formatter = new \WP_CLI\Formatter( $assoc_args, $this->fields, 'thememods' ); $formatter->display_items( $list ); } /** * Gets a list of theme mods. * * ## OPTIONS * * [--field=] * : Returns the value of a single field. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * --- * * ## EXAMPLES * * # Gets a list of theme mods. * $ wp theme mod list * +------------------+---------+ * | key | value | * +------------------+---------+ * | background_color | dd3333 | * | link_color | #dd9933 | * | main_text_color | #8224e3 | * +------------------+---------+ * * @subcommand list */ public function list_( $args = array(), $assoc_args = array() ) { $assoc_args['all'] = 1; $this->get( $args, $assoc_args ); } /** * Removes one or more theme mods. * * ## OPTIONS * * [...] * : One or more mods to remove. * * [--all] * : Remove all theme mods. * * ## EXAMPLES * * # Remove all theme mods. * $ wp theme mod remove --all * Success: Theme mods removed. * * # Remove single theme mod. * $ wp theme mod remove background_color * Success: 1 mod removed. * * # Remove multiple theme mods. * $ wp theme mod remove background_color header_textcolor * Success: 2 mods removed. */ public function remove( $args = array(), $assoc_args = array() ) { if ( ! \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( 'You must specify at least one mod or use --all.' ); } if ( \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) ) { remove_theme_mods(); WP_CLI::success( 'Theme mods removed.' ); return; } foreach ( $args as $mod ) { remove_theme_mod( $mod ); } $count = count( $args ); $success_message = ( 1 === $count ) ? '%d mod removed.' : '%d mods removed.'; WP_CLI::success( sprintf( $success_message, $count ) ); } /** * Sets the value of a theme mod. * * ## OPTIONS * * * : The name of the theme mod to set or update. * * * : The new value. * * ## EXAMPLES * * # Set theme mod * $ wp theme mod set background_color 000000 * Success: Theme mod background_color set to 000000. */ public function set( $args = array(), $assoc_args = array() ) { list( $mod, $value ) = $args; set_theme_mod( $mod, $value ); if ( get_theme_mod( $mod ) === $value ) { WP_CLI::success( "Theme mod {$mod} set to {$value}." ); } else { WP_CLI::success( "Could not update theme mod {$mod}." ); } } }