Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions features/sidebar.feature
Original file line number Diff line number Diff line change
@@ -1,28 +1,48 @@
Feature: Manage WordPress sidebars

Scenario: List available sidebars
Background:
Given a WP install

When I try `wp theme delete twentytwelve --force`
And I try `wp theme delete twentytwelve --force`
And I run `wp theme install twentytwelve --activate`
Then STDOUT should not be empty

Scenario: List available sidebars
When I run `wp sidebar list --fields=name,id`
Then STDOUT should be a table containing rows:
| name | id |
| Main Sidebar | sidebar-1 |
| First Front Page Widget Area | sidebar-2 |
| Second Front Page Widget Area | sidebar-3 |
| Inactive Widgets | wp_inactive_widgets |

When I run `wp sidebar list --format=ids`
Then STDOUT should be:
"""
sidebar-1 sidebar-2 sidebar-3 wp_inactive_widgets
"""

When I run `wp sidebar list --format=count`
Then STDOUT should be:
"""
4
"""

Scenario: Get sidebar details
When I run `wp sidebar get sidebar-1`
Then STDOUT should contain:
"""
sidebar-1
"""

Scenario: Sidebar exists command returns success
When I run `wp sidebar exists sidebar-1`
Then the return code should be 0

Scenario: Sidebar exists command returns failure
When I try `wp sidebar exists does-not-exist`
Then the return code should be 1

Scenario: Get non-existing sidebar returns error
When I try `wp sidebar get does-not-exist`
Then STDERR should contain:
"""
does not exist
"""
And the return code should be 1

73 changes: 73 additions & 0 deletions src/Sidebar_Command.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,77 @@ public function list_( $args, $assoc_args ) {
$formatter = new Formatter( $assoc_args, $this->fields );
$formatter->display_items( $sidebars );
}

/**
* Get details about a specific sidebar.
*
* ## OPTIONS
*
* <id>
* : The sidebar ID.
*
* [--fields=<fields>]
* : Limit the output to specific object fields.
*
* [--format=<format>]
* : Render output in a particular format.
* ---
* default: table
* options:
* - table
* - csv
* - json
* - ids
* - count
* - yaml
* ---
*
* ## EXAMPLES
*
* $ wp sidebar get sidebar-1
* $ wp sidebar get wp_inactive_widgets --format=json
*
* @when after_wp_load
*/
public function get( $args, $assoc_args ) {
global $wp_registered_sidebars;

Utils\wp_register_unused_sidebar();

$id = $args[0];

if ( ! array_key_exists( $id, $wp_registered_sidebars ) ) {
WP_CLI::error( "Sidebar '{$id}' does not exist." );
}

$formatter = new Formatter( $assoc_args, $this->fields );
$formatter->display_item( $wp_registered_sidebars[ $id ] );
}

/**
* Check if a sidebar exists.
*
* ## OPTIONS
*
* <id>
* : The sidebar ID.
*
* ## EXAMPLES
*
* $ wp sidebar exists sidebar-1
* $ wp sidebar exists wp_inactive_widgets && echo "exists"
*
* @when after_wp_load
*/
public function exists( $args ) {
global $wp_registered_sidebars;

Utils\wp_register_unused_sidebar();

if ( array_key_exists( $args[0], $wp_registered_sidebars ) ) {
WP_CLI::halt( 0 );
}

WP_CLI::halt( 1 );
}
}