Making WordPress.org

Changeset 13223


Ignore:
Timestamp:
02/20/2024 01:16:24 AM (2 years ago)
Author:
dd32
Message:

Plugin Directory: Cleanup empty terms regularly.

By having less empty terms we get benefits around query performance and less noise to filter.

Location:
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php

    r13221 r13223  
    13821382
    13831383                        wp_safe_redirect( $url, 301 );
    1384                         die();
    1385                 }
    1386 
    1387                 // Existing tag with no plugins.
    1388                 if (
    1389                         is_tax( 'plugin_tags' ) &&
    1390                         ! have_posts() &&
    1391                         // Only redirect if only plugin_tags is queried. Other taxonomies cannot be handled.
    1392                         count( $wp_query->tax_query->queried_terms ) <= 1
    1393                 ) {
    1394                         // [1] => plugins [2] => tags [3] => example-plugin-name [4..] => random().
    1395                         $path = explode( '/', $_SERVER['REQUEST_URI'] );
    1396 
    1397                         wp_safe_redirect( home_url( '/search/' . urlencode( $path[3] ) . '/' ), 301 );
    13981384                        die();
    13991385                }
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-meta-sync.php

    r13220 r13223  
    2828                $this->sync_ratings();
    2929                $this->update_tested_up_to();
     30                $this->cleanup_empty_terms();
    3031
    3132                Manager::clear_memory_heavy_variables();
     
    196197                }
    197198        }
     199
     200        /**
     201         * Remove old plugin tags that are no longer in use.
     202         */
     203        public function cleanup_empty_terms() {
     204                $taxonomies = [
     205                        'plugin_tags',
     206                        'plugin_contributors',
     207                        'plugin_committers',
     208                        'plugin_support_reps'
     209                ];
     210                foreach ( $taxonomies as $taxonomy ) {
     211                        $terms = get_terms( array(
     212                                'taxonomy'   => $taxonomy,
     213                                'hide_empty' => false,
     214                                'count'      => true,
     215                        ) );
     216
     217                        $terms = array_filter( $terms, function( $term ) {
     218                                return $term->count === 0;
     219                        } );
     220
     221                        foreach ( $terms as $term ) {
     222                                wp_delete_term( $term->term_id, $term->taxonomy );
     223                        }
     224                }
     225        }
    198226}
Note: See TracChangeset for help on using the changeset viewer.