Facebook にシェア
[`evernote` not found]
LINEで送る

Welcartを利用している際に、商品に重量データを追加する必要がでてきました。
オプションに追加して選んでもらおうかと思いましたが、調べるとSkuのデータを拡張することができる模様。
というわけで早速実装してみました。

<?php
//WelcartでSkuに追加項目

//重量項目を追加
add_filter( 'usces_filter_sku_meta_form_advance_title' , 'add_weight_title');
function add_weight_title(){
	return '<th>&nbsp;</th><th>重量</th>';
}
//重量フィールドを新規追加
add_filter( 'usces_filter_sku_meta_form_advance_field' , 'add_weight_field');
function add_weight_field(){
	return '<td class="item-sku-price">&nbsp;</td><td class="item-sku-zaikonum"><input type="text" id="newskuadvance" name="newskuadvance" class="newskuadvance metaboxfield" /></td>';
}

//重量フィールドを追加
add_filter( 'usces_filter_sku_meta_row_advance' , 'add_weight_row_advance',10,2);
function add_weight_row_advance($default_field,$sku){
	$metaname = "itemsku[" . $sku["meta_id"] .  "][skuadvance]";
	return '<td class="item-sku-price">&nbsp;</td><td class="item-sku-zaikonum"><input type="text"  id="' . $metaname .'" name="' . $metaname . '" class="newskuweight metaboxfield" value="' . $sku['advance'] . '"/></td>';

}

//新規項目を保存
add_filter( 'usces_filter_add_item_sku_meta_value' , 'add_weight_meta');
function add_weight_meta($value){
	$advance = isset($_POST['newskuadvance']) ? $_POST['newskuadvance'] : '';
	$value['advance'] = $advance["newskuadvance"];
	return $value;
}

//項目を変更
add_filter( 'usces_filter_up_item_sku_meta_value' , 'up_weight_meta');
function up_weight_meta($value){
	$advance = isset($_POST['skuadvance']) ? $_POST['skuadvance'] : '';
	$value['advance'] = $advance;
	return $value;
}
?>

usces_filter_sku_meta_form_advance_fieldというフィルターでSkuの入力部分が拡張できるようなのですが
困ったことにここにフィールドを追加したら自動で追加してくれるわけではなくJavascriptのほうでフィールド名を指定されていて
newskuadvanceおよびskuadvanceのフィールド名しか使えないようです。ちょっと不便ですね。