Je me demande comment dois-je insérer la catégorie par programme et ne l'insérer qu'une fois après l'activation du thème.
Je sais jusqu'ici.
function example_insert_category() {
wp_insert_term(
'Science',
'category',
array(
'description' => 'This is an Science category.',
'slug' => 'science'
)
);
}
add_action( 'after_setup_theme', 'example_insert_category' );
je ne sais pas comment insérer des enfants, etc. Je veux insérer une catégorie structurée comme ceci:
Science
--Grade 11
----Science
----Management
----Humanities
--Grade 12
----Science
----Management
----Humanities
MIT
--Grade 15
----Science
----Management
----Humanities
--Grade 16
----Science
----Management
----Humanities
Est-il possible de le faire par programme?
Merci
Gardez une trace de la valeur de retour de wp_insert_term
et utilisez-la pour construire votre structure. Une valeur de retour réussie sera un tableau avec une clé term_id
que vous pouvez passer dans le tableau wp_insert_term
de $args
en tant que parent
.
$parent = wp_insert_term('Science', 'category'); // I'll leave out `$args` here
if (is_wp_error($parent)) {
// insert didn't work! return from your function or error or whatever
return;
}
// grade 11 category has "Sience" as its parent
$grade11 = wp_insert_term('Grade 11', 'category', ['parent' => $parent['term_id']]);
if (is_wp_error($grade11)) {
// same as above, something went wrong
return;
}
// Management has the parent "Grade 11"
wp_insert_term('Management', 'category', ['parent' => $grade11['term_id']]);
En ce qui concerne l'insertion unique, vous pouvez vous connecter à after_switch_theme
et faire votre travail. Vous voudrez probablement rechercher votre terme en premier pour vous assurer qu'il n'a pas été inséré, ou définir une option avec l'identifiant de terme inséré en cas de succès.
add_action('after_switch_theme', 'wpse206511_switch');
function wpse206511_switch()
{
if (get_option('wpse206511_term_id')) {
// already done, bail
return;
}
// category insert code from above
// set the term ID in an option that you can check later
// if/when the theme gets activated/deactivated again
add_option('wpse206511_term_id', $parent['term_id']);
}