Created
October 17, 2018 17:32
-
-
Save rinatkhaziev/22b6b389d5e42d9b48dee64cfbf3766f to your computer and use it in GitHub Desktop.
WP CLI: list terms with the same name in a hierarchical taxonomy for sites in multisite network.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* List terms (categories) with the same name for each of the blog with a sticker. | |
* | |
* This is a one-off, but could be easily abstracted to be more versatile. | |
* | |
* @subcommand list-multiple-terms-with-the-same-name | |
* @synopsis [--taxonomy=<category>] | |
*/ | |
function list_multiple_terms_with_the_same_name( $args, $assoc_args ) { | |
$tax = $assoc_args['taxonomy'] ?? 'category'; | |
$current_blog_id = get_current_blog_id(); | |
// Can be list of blog ids in the network | |
$blog_ids = [ $current_blog_id ]; | |
$ret = []; | |
$get_function = function() { | |
$categories = get_terms( $tax, [ 'hide_empty' => false, 'fields' => 'id=>name' ] ); | |
return array_unique( array_diff_assoc( $categories, array_unique( $categories ) ) ); | |
}; | |
WP_CLI::line( sprintf( 'Found %d blogs with "%s" sticker', count( $blog_ids ), $sticker ) ); | |
foreach( $blog_ids as $blog_id ) { | |
switch_to_blog( $blog_id ); | |
$dupes = $get_function(); | |
if ( $dupes ) { | |
$ret[ $blog_id ] = [ | |
'bloginfo' => [ | |
'name' => get_bloginfo( 'name' ), | |
'url' => get_bloginfo( 'url' ), | |
], | |
'duplicateCategories' => array_map( function( $cat ) { return sprintf("%s : %s", $cat, esc_url_raw( admin_url( "edit-tags.php?taxonomy=category&post_type=post&s={$cat}" ) ) ); }, array_values( $dupes ) ) | |
]; | |
} | |
$this->stop_the_insanity(); | |
} | |
WP_CLI::line( sprintf( '%d blogs have categories with duplicate names', count( $ret ) ) ); | |
WP_CLI::line( wp_json_encode( $ret, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ) ); | |
switch_to_blog( $current_blog_id ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment