diff --git a/features/plugin-search.feature b/features/plugin-search.feature index ddf80d442..ab5e5bbc6 100644 --- a/features/plugin-search.feature +++ b/features/plugin-search.feature @@ -18,3 +18,12 @@ Feature: Search WordPress.org plugins """ name,slug,active_installs """ + + Scenario: Search for plugins with url field + Given a WP install + + When I run `wp plugin search gutenberg --fields=slug,url --format=csv` + Then STDOUT should contain: + """ + gutenberg,https://wordpress.org/plugins/gutenberg/ + """ diff --git a/src/WP_CLI/CommandWithUpgrade.php b/src/WP_CLI/CommandWithUpgrade.php index 798d8ca92..f64c8c955 100755 --- a/src/WP_CLI/CommandWithUpgrade.php +++ b/src/WP_CLI/CommandWithUpgrade.php @@ -853,8 +853,11 @@ protected function _search( $args, $assoc_args ) { $items = $api->$plural; // Add `url` for plugin or theme on wordpress.org. + // In older WP versions these used to be objects. foreach ( $items as $index => $item_object ) { - if ( $item_object instanceof \stdClass ) { + if ( is_array( $item_object ) ) { + $items[ $index ]['url'] = "https://wordpress.org/{$plural}/{$item_object['slug']}/"; + } elseif ( $item_object instanceof \stdClass ) { $item_object->url = "https://wordpress.org/{$plural}/{$item_object->slug}/"; } }