Welcart「商品マスター」の一覧表に列を追加

先日Welcartを使用したサイトのカスタマイズをさせていただきました。

実際には使いませんでしたが、「商品マスター」の一覧表に列を追加できるんだろうか?と考え調べた結果、追加することができました。

自分自身の備忘録として書いておきます。需要があるかは分かりませんが参考にしてください。

コード

※Welcartのバージョンは2.8です

選択した商品をトップページのスライドショーに表示する、という想定で一番右に「スライド」の列を追加しています。

/* theme/functions.php */

// 商品マスターth追加
add_filter( 'usces_filter_itemlist_header', function( $arr_header ) {
	$arr_header += array( 'display_slider' => '<span class="sortcolumn">スライド</span>' );
	return $arr_header;
});

// 商品マスターtd追加
add_filter( 'usces_filter_itemlist_body', function( $array ) {
	$array += array( 'display_slider' => '表示' );
	return $array;
});

add_action( 'usces_action_itemlist_detail', function( $key, $value ) {
	if( $key == 'display_slider') {
		echo "<td>$value</td>";
	}
}, 10, 2);

9行目の 「’表示’」の部分を、カスタムフィールドから取得した値などに変えて使用します。

解説

まずは<th>追加の部分です。

add_filter( 'usces_filter_itemlist_header' )

で、$arr_header に項目を追加します。

$arr_header には、

'item_code' => '<a href="〇〇"><span>商品コード</span></a>',
'item_name' => '<a href="〇〇"><span>商品名</span></a>',
...
... 

のような値が配列で入っていますので、そこに追加したい列の情報を加えます。

$arr_header += array( 'display_slider' => '<span class="sortcolumn">スライド</span>' );

次に<td>の追加です。8行目の

add_filter( 'usces_filter_itemlist_body' )

で、$array に値を追加します。

$array には、

'item_code' => '002',
'item_name' => '商品2',
...
...

などの値が入っていますので、9行目の

$array += array( 'display_slider' => '表示' );

で追加します。

「’display_slider’」の部分はお好みの文字列をつけて、14行目の、

if( $key == '〇〇')

の文字列と合わせてください。

その後この $array は foreach で回され、

/* Welcart/usces_item_master_list.php */

<?php if( $key == 'item_code') : ?>
  <td>
  〇〇
 </td>
...

のように各項目(列)ごとに処理されますので、自分で追加したい列の処理をアクションフック「’usces_action_itemlist_detail’」で追加します。

add_action( 'usces_action_itemlist_detail', function( $key, $value ) {
	if( $key == 'display_slider') {
		echo "<td>$value</td>";
	}
}, 10, 2);

$value には、11行目で $array に追加した値が入ってきます。