web-dev-qa-db-de.com

Erstellen Sie programmgesteuert eine Produktkategorie und fügen Sie im Woocommerce ein Miniaturbild hinzu

Ich versuche, Produkt- (Unter-) Kategorien in einer WordPress-Installation zu erstellen. Der (Unter-) Kategorieteil ist überhaupt kein Problem, aber ich kann anscheinend keine Möglichkeit finden, das Miniaturbild der bestimmten Kategorie hinzuzufügen.

In wp-admin fragt das Feld, das ich ausfüllen möchte, nach einer Anhangs-ID. Daher habe ich versucht, das Bild als Anhang hochzuladen, ohne es mit einem bestimmten Beitrag zu verknüpfen. Ich habe dann meine Kategorie erstellt und die Feldnamen product_cat_thumbnail_id und thumbnail_id in der Funktion wp_insert_term() ausprobiert und sie mit der Anhangs-ID gefüllt. Genau wie die Funktion wp-admin, mit der Ausnahme, dass wp-admin nach dem Hochladen JavaScript verwendet und diese beim Erstellen der Kategorie speichert.

Ich bin mir nicht sicher, ob ich es falsch mache, ob mir etwas Offensichtliches fehlt oder ob es einfach eine Art geschütztes Feld ist, das Sie nicht ausfüllen dürfen. (Was mir verrückt vorkommt)

Irgendwelche Ideen?

2
BBQ.

Hiermit meine Antwort auf meinen eigenen Beitrag. Ich hoffe, das ist auch für andere hilfreich!

Um die Kategorie zu erstellen, habe ich ein Array mit den Daten pro Kategorie verwendet, die für die Funktion wp_insert_term benötigt werden.

Dann habe ich dieses Array durchlaufen und eine fetch_media -Funktion verwendet, die das Bild hochlädt, das in dem der Funktion zugewiesenen Bildpfad gefunden wurde, und eine Anhangs-ID zurückgibt.

Ich rufe dann die Funktion wp_insert_term auf, die ich als $cid festgelegt habe, damit ich den Wert term_id von der zurückgegebenen Array-Ausgabe zurückerhalten kann.

Wenn der zurückgegebene $cid['term_id'] und der $thumb_id von der fetch_media -Funktion abgerufen wurden, kann ich die update_woocommerce_term_meta -Funktion verwenden und mein Miniaturbild mit dem hochgeladenen Anhang aktualisieren.

Die grundlegende fetch_media Funktion, die ich benutze, kann hier gefunden werden:
http://nlb-creations.com/2012/09/26/how-to-programmatically-import-media-files-to-wordpress/

Ich habe es so geändert, dass die post_id nicht erforderlich war, da meine Begriffe (Kategorien) offensichtlich keine Beiträge sind.

$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.