web-dev-qa-db-ja.com

プログラムで商品カテゴリを作成し、woocommerceにサムネイルを追加する

私はWordPressのインストールで製品(サブ)カテゴリを作成しようとしています。 (サブ)カテゴリ部分はまったく問題ありませんが、サムネイル画像を特定のカテゴリに追加する方法を見つけることができないようです。

wp-adminでは、入力したいフィールドに添付ファイルIDが要求されるので、特定の投稿に接続せずに、画像を添付ファイルとしてアップロードしてみました。次にカテゴリを作成し、wp_insert_term()関数内でフィールド名product_cat_thumbnail_idthumbnail_idを試して、それらに添付ファイルIDを入力しました。アップロード後にwp-adminがJavaScriptで埋めて、カテゴリを作成するときにすべて保存することを除けば、wp-admin関数とまったく同じです。

私が間違ったことをしているのか、明らかな何かが欠けているのか、それともあなたが記入を許可されていないのは単にある種の保護されたフィールドであるのかどうかわからない。

何か案は?

2
BBQ.

これにより私自身の投稿に対する私の回答。私はこれが他の人にも役立つことを願っています!

カテゴリを作成するために、関数wp_insert_termに必要なカテゴリごとのデータを含む配列を使いました。

それから私はその配列をたどり、その関数に与えられたimage-pathで見つけられた画像をアップロードし、そして添付ファイルIDを返すfetch_media関数を使いました。

それから、返された配列出力からwp_insert_term値を取得できるように、$cid関数を呼び出します。これはterm_idとして設定します。

返された$cid['term_id']$thumb_id関数から取得したfetch_mediaを使って、update_woocommerce_term_meta関数を使用し、アップロードされた添付ファイルで私のサムネイルを更新することができます。

私が使っている基本的なfetch_media関数はここにあります。
http://nlb-creations.com/2012/09/26/how-to-programically-import-media-files-to-wordpress/

明らかに、私の用語(カテゴリ)は投稿ではないので、私はそれを変更してpost_idが必要とされないようにしました。

$cats = array(
    array('thumb' => 'images/uploads/cat09.png','name' => 'Cat 9','description' => 'Cat 9 description','slug' => 'cat-9','parent' => 8),
    array('thumb' => 'images/uploads/cat10.png','name' => 'Cat 10','description' => 'Cat 10 description','slug' => 'cat-10','parent' => 8),
    array('thumb' => 'images/uploads/cat11.png','name' => 'Cat 11','description' => 'Cat 11 description','slug' => 'cat-11','parent' => 8),
);

foreach($cats as $data) {
    $thumb_id = fetch_media($data['thumb']);
    $cid = wp_insert_term(
        $data['name'], // the term 
        'product_cat', // the taxonomy
        array(
            'description'=> $data['description'],
            'slug' => $data['slug'],
            'parent' => $data['parent']
        )
    );

    $cat_id = isset( $cid['term_id'] ) ? $cid['term_id'] : 0;
    update_woocommerce_term_meta( $cid['term_id'], 'thumbnail_id', absint( $thumb_id ) );
}
5
BBQ.