Last active
October 17, 2022 16:45
-
-
Save willybahuaud/a301c4d0857fdaa27d7e18fd9cbb0280 to your computer and use it in GitHub Desktop.
Set a default term for custom taxonomy and custom post type
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 | |
add_action( 'wp_insert_post', 'willy_set_default_term', 10, 3 ); | |
function willy_set_default_term( $post_id, $post, $update ) { | |
if ( 'cpt' == $post->post_type ) { // replace `cpt` with your custom post type slug | |
/** | |
* Replace `taxo` by the taxonomy slug you want to control/set | |
* … and replace `default-term` by the default term slug (or name) | |
* (or you can use a `get_option( 'my-default-term', 'default term' )` option instead, which is much better) | |
*/ | |
if ( empty( wp_get_post_terms( $post_id, 'taxo' ) ) ) { | |
wp_set_object_terms( $post_id, get_option( 'default_taxo_term', 'default-term' ), 'taxo' ); | |
} | |
} | |
} |
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 | |
add_action( 'admin_init', 'willy_register_default_taxo_term' ); | |
function willy_register_default_taxo_term() { | |
register_setting( 'writing', 'default_taxo_term' ); | |
add_settings_field( | |
'default_taxo_term', | |
'Terme de taxonomie par défaut', | |
'wp_dropdown_categories', | |
'writing', | |
'default', | |
array( | |
'taxonomy' => 'taxo', | |
'hide_empty' => false, | |
) | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ce code sert à reproduire le comportement de la catégorie par défaut de WordPress – qui est automatiquement assignées aux articles non catégorisés – pour les taxonomies personnalisées. Le cœur de WordPress, lui, le fait en dur dans le processus d’ajout d’article, mais nous pouvons utiliser l’action
wp_insert_post
pour ça…Il faut remplacer
taxo
par la taxonomie ciblée, etdefault-term
par votre terme par défaut.À noter que vous pouvez aussi poser une condition sur la variable
$update
pour laisser à vos utilisateurs la possibilité de décocher tous les termes lors d’une mise à jour (sans réassigner le terme par défaut).