私はどのように私はプログラム的にカテゴリを挿入する必要があり、それはテーマがアクティブになった後に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
プログラムで実行することは可能ですか?
ありがとう
wp_insert_term
の戻り値を追跡し、それを使用して構造を構築します。戻り値が成功すると、term_id
のwp_insert_term
配列にparent
として渡すことができる$args
キーを持つ配列になります。
$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
にフックして自分の作業を行うことができます。おそらく最初にあなたの用語を調べてそれが挿入されていないことを確かめるか、成功したら挿入された用語IDでオプションを設定するでしょう。
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']);
}