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?
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 ) );
}