Skip to content

Instantly share code, notes, and snippets.

@willybahuaud
Last active October 17, 2022 16:45
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save willybahuaud/a301c4d0857fdaa27d7e18fd9cbb0280 to your computer and use it in GitHub Desktop.
Save willybahuaud/a301c4d0857fdaa27d7e18fd9cbb0280 to your computer and use it in GitHub Desktop.
Set a default term for custom taxonomy and custom post type
<?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' );
}
}
}
<?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,
)
);
}
@willybahuaud
Copy link
Author

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, et default-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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment