Last active
July 6, 2021 19:08
-
-
Save birgire/4a43dbe1b7566aa0f162b59066276d15 to your computer and use it in GitHub Desktop.
WordPress Plugin:Search for name, slug or description in the tag search in /wp-admin/edit-tags.php?taxonomy=post_tag.
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 | |
/** | |
* Plugin Name: Extend the tag search | |
* Description: Search for name, slug or description in the tag search in /wp-admin/edit-tags.php?taxonomy=post_tag. | |
* Plugin URI: https://gist.github.com/birgire/4a43dbe1b7566aa0f162b59066276d15 | |
* Author: birgire | |
* Version: 1.0.0 | |
*/ | |
/** | |
* Target the correct get_terms() instance on edit-tags.php and replace the search with the | |
* custom _name_or_slug_or_description__like attribute | |
*/ | |
add_filter( 'get_terms_args', function( $args, $taxonomies ) | |
{ | |
if( | |
did_action( 'load-edit-tags.php' ) // Target the edit-tags.php | |
&& 'post_tag' === filter_input( INPUT_GET, 'taxonomy' ) // Target post tags | |
&& isset( $args['search'] ) // Target the search mode | |
&& 'all' === $args['fields'] // Exclude the get_terms() instance with term count | |
&& ! isset( $args['largest'] ) // Exclude the get_terms() instance within wp_tag_cloud() | |
) { | |
$args['_name_or_slug_or_description__like'] = $args['search']; | |
unset( $args['search'] ); | |
} | |
return $args; | |
}, 10, 2 ); | |
/** | |
* Support the custom _name_or_slug_or_description__like attribute of get_terms() | |
*/ | |
add_filter( 'terms_clauses', function( $clauses, $taxonomies, $args ) use ( &$wpdb ) | |
{ | |
if( | |
! empty( $args['_name_or_slug_or_description__like'] ) | |
&& ! empty( $clauses['where'] ) | |
) { | |
$like = '%' . $wpdb->esc_like( $args['_name_or_slug_or_description__like'] ) . '%'; | |
$clauses['where'] .= $wpdb->prepare( | |
" AND ( t.name LIKE %s OR t.slug LIKE %s OR tt.description LIKE %s ) ", | |
$like, | |
$like, | |
$like | |
); | |
} | |
return $clauses; | |
}, 10, 3 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment