tips

welcart「配送希望日」の表示内容をカスタマイズ

welcartネタで細かいカスタマイズをひとつ。

welcartの配送希望日の表示がずらっと数字の羅列でちょっと見にくい。曜日とか欲しい。ついでに土日、平日指定なんかも欲しい。

sc-2015-03-05-22.34

 

/////////////////////// 配送希望日のカスタマイズ ///////////////////////


add_filter( 'usces_delivery_after_days_script', 'my_usces_delivery_after_days_script' );
function my_usces_delivery_after_days_script( $delivery_after_days_script ){
return $delivery_after_days_script = "
	option += '<option value=\"".__('No preference', 'usces')."\">指定しない(一番早い営業日に送付)</option>';
	option += '<option style=\"background-color: #FFF0F5;\" value=\"土日\">土日</option>';
	option += '<option style=\"background-color: #F0FFF1;\" value=\"平日\">平日</option>';
	for(var i = 0; i < delivery_after_days; i++) {
		var newdate = new Date( date[\"year\"]+\"/\"+date[\"month\"]+\"/\"+date[\"day\"] ),
			getday = newdate.getDay(),
			daystyle = '',
			weekday = [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"];
		date_def = date[\"year\"]+\"-\"+parseInt(date[\"month\"])+\"-\"+parseInt(date[\"day\"]);
		date_str = date[\"year\"]+\"年\"+parseInt(date[\"month\"])+\"月\"+parseInt(date[\"day\"])+\"日(\"+weekday[getday]+\")\";
		if ( getday == 0 ){
			daystyle = 'background-color: #FFF0F5;'; // 日曜日
		} else if ( getday == 6 ) {
			daystyle = 'background-color: #F0F8FF;'; // 土曜日
		}
		if(date_def == selected_delivery_date) {
			option += '<option style=\"' + daystyle + '\" value=\"' + date_str + '\" selected>' + date_str + '</option>';
		} else {
			option += '<option style=\"' + daystyle + '\" value=\"' + date_str + '\">' + date_str + '</option>';
		}
		date = addDate(date[\"year\"], date[\"month\"], date[\"day\"], 1);
	}";
}

add_filter( 'usces_filter_order_edit_delivery_days_select', 'my_usces_filter_order_edit_delivery_days_select', 10, 3 );
function my_usces_filter_order_edit_delivery_days_select( $delivery_days_select, $data, $delivery_after_days ){
	$delivery_days_select = '<option value="'.esc_attr( __('Non-request', 'usces') ).'">指定しない(一番早い営業日に送付)</option>';
	$value = '土日';
	$selected = (isset($data['order_delivery_date']) && $data['order_delivery_date'] == $value) ? ' selected="selected"' : '';
	$delivery_days_select .= '<option value="'.esc_attr( $value ).'"'.$selected.'>'.$value.'</option>';
	$value = '平日';
	$selected = (isset($data['order_delivery_date']) && $data['order_delivery_date'] == $value) ? ' selected="selected"' : '';
	$delivery_days_select .= '<option value="'.esc_attr( $value ).'"'.$selected.'>'.$value.'</option>';
	$data_order_date = explode(" ", $data['order_date']);
	$order_date = explode("-", $data_order_date[0]);
	for($i = 0; $i < $delivery_after_days; $i++) {
		$timestamp = mktime(0,0,0,$order_date[1],$order_date[2]+$i,$order_date[0]);
		$weekday = array( "日", "月", "火", "水", "木", "金", "土" );
		$value = date( 'Y年n月j日', $timestamp ).'('.$weekday[date( 'w', $timestamp )].')';
		$selected = (isset($data['order_delivery_date']) && $data['order_delivery_date'] == $value) ? ' selected="selected"' : '';
		$delivery_days_select .= '<option value="'.$order_date[1].'-'.($order_date[2]+$i).'-'.$order_date[0].'"'.$selected.'>'.$value.'</option>';
	}
	$delivery_date = ( isset( $data['order_delivery_date'] ) ) ? $data['order_delivery_date'] : '';
	return '<select name="offer[delivery_date]" id="delivery_date_select" style="width:100%;" value="'.$delivery_date.'" />'. $delivery_days_select.'</select>';
}

以上をfunctions.phpに記載して下さい。「usces_delivery_after_days_script」フックはカート画面の表記を変更します。「usces_filter_order_edit_delivery_days_select」フックは受注リスト内の配送希望日セレクタを変更しています。こういう細部のフックもきっちと用意されている当たり、welcartはカスタマイズすることを考えて設計されているんだな、と関心させられますね。

「welcartの商品を在庫や価格で絞り込み&並べ替えする。」への1件の返信

  1. こんにちは。

    いつも拝見しております。
    上記ソースを参考に、function.phpとカテゴリーページ(category.php)に設置させて頂いた所、記事等の投稿ページのカテゴリーページが表示されなくなって(該当する項目は見つかりませんでした。という表記になって)しまいました。
    回避する方法等はございますでしょうか?

    1. 自分が借りたコードに自分で責任を取れないならカスタマイズする前のソースに戻すべきでしょう。

      あなたの言っていることは、「私の代わりに問題を解決してください(タダで、善意で)」と同じです。
      記事主さんに対して非常に失礼です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です