Your cart is currently empty!
Les extensions et les thèmes WordPress ont souvent recours aux taxonomies afin de classer vos contenus et ainsi proposer des filtres de recherche pour vos utilisateurs.
N.B : l’astuce présentée ici ne s’applique pas aux catégories et aux étiquettes de WordPress. De plus, ce type de modification n’est pas sans conséquence : il est probable que vous deviez adapter votre thème et / ou les extensions concernées.
En natif, les catégories et les étiquettes sont des taxonomies pour les articles mais la plupart des projets en utilisent pour couvrir leurs propres besoins. Un simple hook nous permet de les désactiver.
Version 1
Dans le fichier functions.php de votre thème ou via un mu-plugins, collez ces lignes de code :
<?php if (!defined('ABSPATH')) die('Restricted Area');
/*
* Plugin Name: Unregister Taxonomies
* Description: Properly disable any WordPress taxonomy.
* Version: 20160901
* Author: Aurélien Denis (Neticpro)
* Author URI: https://wpchannel.com/desactiver-taxonomie-type-de-contenu-personnalise/
*/
function wpc_unregister_job_listing_type() {
unregister_taxonomy('job_listing_type'); // Specify the taxonomy to unregister
}
add_action('init', 'wpc_unregister_job_listing_type');
Créez et nommez votre fichier mu-unregister-taxonomies.php
Vous devez modifier la ligne 12 et spécifier les taxonomies que vous souhaitez désactiver. Pour l’identifier, ouvrez celle concernée dans votre back-office puis récupérez l’identifiant à partir de l’URL. Un exemple ci-dessous avec l’extension WP Job Manager pour les types d’offres :
/wp-admin/edit-tags.php?taxonomy=job_listing_type&post_type=job_listing
Ici, la taxonomie est job_listing_type
.
Notez que la désactivation d’une taxonomie ne supprime en rien les termes qui lui auraient été préalablement affectés. Je vous recommande donc de les supprimer en amont. Une fois le code en place, vous obtiendrez le message suivant : Taxonomie non valide
Version 2
Ci-dessous, un autre code qui vérifie de trouver en base la taxonomie, et la supprime dans les règles.
function delete_custom_terms($taxonomy){
global $wpdb;
$query = 'SELECT t.name, t.term_id
FROM ' . $wpdb->terms . ' AS t
INNER JOIN ' . $wpdb->term_taxonomy . ' AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy = "' . $taxonomy . '"';
$terms = $wpdb->get_results($query);
foreach ($terms as $term) {
wp_delete_term( $term->term_id, $taxonomy );
}
}
// Delete all custom terms for this taxonomy
delete_custom_terms(LISTING_TAXONOMY);
Appelez votre fonction de nettoyage lors de la désinstallation de votre plugin via register_uninstall_hook
Sources
- https://wordpress.stackexchange.com/users/29049/edeneye
- https://wpchannel.com/wordpress/tutoriels-wordpress/desactiver-taxonomie-wordpress