以编程方式在WooCommerce中创建产品类别并添加缩略图

时间:2015-08-12 作者:BBQ.

我正在尝试在WordPress安装上创建产品-(子)类别。(子)类别部分根本没有问题,但我似乎找不到将缩略图添加到特定类别的方法。

在里面wp-admin, 我要填写的字段要求提供附件ID,因此我尝试将图像作为附件上传,但没有将其连接到特定帖子。然后我创建了我的类别,并尝试了字段名product_cat_thumbnail_idthumbnail_id 内部wp_insert_term() 函数,并用附件id填充它们wp-admin 函数执行,但wp-admin 上载后用JavaScript填充,然后在创建类别时保存所有内容。

我不确定我是否做错了,我遗漏了一些明显的东西,或者这只是一个不允许填写的受保护字段。。(我觉得这很疯狂)

有什么想法吗?

1 个回复
最合适的回答,由SO网友:BBQ. 整理而成

这是我对自己帖子的回答。我希望这对其他人也有帮助!

为了创建类别,我使用了一个数组,其中包含函数所需的每个类别的数据wp_insert_term.

然后我通过该数组循环,并使用fetch_media 函数,该函数上载在给定给该函数的图像路径中找到的图像,并返回附件ID。

然后我打电话给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-programmatically-import-media-files-to-wordpress/

我修改了它,因此不需要post\\u id,因为很明显,我的术语(类别)不是post。

$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\']
        )
    );

    if(!is_wp_error($cid)){
        $cat_id = isset( $cid[\'term_id\'] ) ? $cid[\'term_id\'] : 0;
        update_woocommerce_term_meta( $cat_id, \'thumbnail_id\', absint( $thumb_id ) );
    }
}

结束

相关推荐

wp_list_categories + widget

使用下面的代码,我添加了一个span标记,并将类别计数放置在链接中。add_filter(\'wp_list_categories\', \'cat_count_span\'); function cat_count_span($links) { $links = str_replace(\'</a> (\', \'<span>\', $links); $links = str_replace(\')\', \'<