Вставка категории программно
Мне интересно, как мне вставить категорию программно, и она должна вставляться только 1 раз после активации темы.
Я знаю до сих пор.
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' );
Я не знаю, как вставлять детей и т. Д. Я хочу вставить категорию, структурированную следующим образом:
Science
--Grade 11
----Science
----Management
----Humanities
--Grade 12
----Science
----Management
----Humanities
MIT
--Grade 15
----Science
----Management
----Humanities
--Grade 16
----Science
----Management
----Humanities
Можно ли это сделать программно?
Спасибо
1 answers
Следите за возвращаемым значением wp_insert_term
и используйте его для построения своей структуры. Успешным возвращаемым значением будет массив с ключом term_id
, который вы можете передать в массив wp_insert_term
$args
в виде 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']]);
Что касается вставки только один раз, вы можете подключиться к after_switch_theme
и делай свое дело. Вероятно, вы захотите сначала просмотреть свой термин, чтобы убедиться, что он не был вставлен, или установить опцию с идентификатором вставленного термина при успешном выполнении.
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']);
}