web-dev-qa-db-ja.com

カスタム投稿に用語を設定する

カスタム投稿 "artist"と分類/カテゴリ "artist category"があります。新しい投稿を(開発により)作成して、そのアーティストのカテゴリを設定したいのですが、うまくいきません。

私はこのコードでそれをテストしました:

function createNewPost( $response ){
    global $userMeta;

    $userID = $response->ID;
    $user = new WP_User( $userID );

    $role = $userMeta->getUserRole();
    //$catId = get_cat_ID("dj");

    if( $role = 'artiste' ){ 

        $newPost = array(
          'post_title'    => $user->nickname, 
          'post_content'  => $user->description,
          'post_status'   => 'pending',
          'post_author'   => $userID,
          'post_type'     => 'cpt_artists',
          'tax_input' => array('artist-category' => array('dj')
        ));

        $post_id = wp_insert_post( $newPost );

        wp_set_post_terms( $post_id, array( 'dj'), 'artist-category');

    }

}

しかし、うまくいきません。

テストのために、私はwordpressのすべての分類法をリストアップしました、そして結果は以下の通りです。

category、post_tag、nav_menu、link_category、post_format

カスタム分類法 "artist-category"がここに表示されないのはなぜですか?

1
devwin

これは古い質問ですが、tax_input配列はカテゴリのように階層的に見えるため、おそらく次のようになります。

'tax_input' => array('artist-category' => array( 3 ) //use the ID of the category, not the name of the category

wp_set_post_termsのWordPressコーデックスから

カテゴリなどの階層分類の用語を入力する場合は、IDを使用してください。タグのような非階層的な用語を追加したい場合は、名前を使用してください。

リソース:

1
ScottD

あなたはこのようなことを試すことができます。例えばあなたのカテゴリーIDは3です:

wp_set_post_categories($post_id, array("3"));

詳細については

0
Dk-Macadamia