web-dev-qa-db-ja.com

wp_insert_termはカスタム投稿タイプの分類法では機能しません

これが私が抱えている問題です。

  1. "weddingguests"というカスタム投稿タイプがあります
  2. このカスタム投稿タイプ "weddingguest"には、階層のカスタム分類学 "friendsof"があります。
  3. 私はプログラム的にこのカスタム分類に "friendsof"という2つの用語を挿入したいと思います。 "Friends of the Bride"と "Friends of the Groom"

これは私が1つの用語を挿入するために使っている機能と動作です。

// programatically add 2 terms to the taxonomy "FRIENDS OF"
function example_insert_category() {
    wp_insert_term(
        'Example Category',
        'friendsof'
    );
}
add_action( 'after_setup_theme', 'example_insert_category' );

問題:wp_insert_termが私のカスタム分類法でうまくいっていないようです

私が試したこと:

  1. 分類法を階層型から非階層型に切り替えてみました - うまくいきませんでした
  2. Wp_insert_term(同じコード)を使用して、投稿の「カテゴリ」に用語を追加してみました - これはうまくいきました
  3. カスタム分類法 "friendsof"を投稿に割り当ててから自分の用語を追加しようとしました(カスタム投稿タイプの作成方法に問題があると思いました) - うまくいきませんでした
4
Gabriela

after_setup_themeの代わりにinitを試してください

function example_insert_category() {
    wp_insert_term(
        'Example Category',
        'friendsof'
    );
}

add_action( 'init', 'example_insert_category' );
3
Mhon Lie

なぜ そして今調べる時間がないのですが、あなたが選んだフックは時期尚早です。たとえば、after_setup_themeの代わりにinitを使用すると、コードは機能します。

加えて、書かれているように、あなたのコードは少し巧妙であるすべてのページロードで実行されます。これはプラグインの起動時、あるいはおそらくテーマの変更時にのみ実行する方法があります。これは実行頻度を減らすためのものです。おそらく最善のケースは、 "Populate Defaults"というテーマ/プラグインのボタンです。これが一度実行されると、データはデータベースにあるため、必要なくなります。

2
s_ha_dum