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.
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
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