Welcart の購入数量をリスト選択にする
Welcart 購入数量の方式を切り替える方法
WelCart のバージョンアップのたび書き換えるのはカッコ悪い。 現在のところ usces_the_itemQuant は、フックは持っていない。 バージョンアップの時に書き換えようってことで、フックを追加する。 具体的には、こんな感じfunction usces_the_itemQuant( $out = '' ) { global $usces, $post; $post_id = $post->ID; $sku = esc_attr(urlencode($usces->itemsku['code'])); $value = isset( $_SESSION['usces_singleitem']['quant'][$post_id][$sku] ) ? $_SESSION['usces_singleitem']['quant'][$post_id][$sku] : 1; $quant = "<input name=\"quant[{$post_id}][" . $sku . "]\" type=\"text\" id=\"quant[{$post_id}][" . $sku . "]\" class=\"skuquantity\" value=\"" . $value . "\" onKeyDown=\"if (event.keyCode == 13) {return false;}\" />"; $html = apply_filters('usces_filter_the_itemQuant', $quant, $post); $html = apply_filters( 'usces_the_itemQuant_para_to_customer', $html); ←フックの追加 if( $out == 'return' ){ return $html; }else{ echo $html; } }呼び出し側
/* フック名 マイ関数 優先順位 受け取り引数 */ add_filter("usces_the_itemQuant_para_to_customer","welcartitemQuant",10 , 1 ); function welcartitemQuant($html) { : }これで好きなことができる。
WelCart の購入数量入力の切り替えは、カスタムフィールドで個数選択させようか。
※このソースは試作サンプルのなので実際に動かしていません。 以下をプラグインに足して、その内容をみて select にするか input にするか決めるといい。Welcart 商品マスターに個数をエントリー
/********************************************************/ /* function body エントリーの表示 (投稿画面) */ /********************************************************/ function welcart_entry() { global $post; $welcart_entry_value = get_post_meta($post->ID, $meta_box['itemQuant'], true); echo'<input type="hidden" name="itemQuant_noncename" id="itemQuant_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo'<textarea name="itemQuant" cols="54" rows="5"/>'.$welcart_entry_value.'</textarea>'; echo'<br />'; } /********************************************************/ /* 設定 */ /********************************************************/ function create_welcart_entry() { global $theme_name; if ( function_exists('add_meta_box') ){ /* 商品マスターは、ページなので ページ内にメタボックスを設定する */ add_meta_box( 'work-welcart-entry_meta-boxes', // メタボックスID 'Welcart 数量エントリー', // メタボックスタイトル 'welcart_entry', // メタボックス内容表示 callback 'page', // メタボックスの表示先 (post, page, link, dashboard,) 'normal', // 編集画面での表示場所 (normal, advanced, side) 'high' ); // メタボックス表示優先度 (high, core, default, low) } } /********************************************************/ /* 入力内容を保存 */ /********************************************************/ function entry_welcart_meta_save_postdata( $post_id ) { global $post, $entry_meta_boxes; foreach($entry_meta_boxes as $meta_box) { // Verify if ( !wp_verify_nonce( $_POST['itemQuant_noncename'], plugin_basename(__FILE__) )) { return $post_id; } if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id )) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id )) return $post_id; } $data = $_POST[$meta_box['itemQuant']]; if(get_post_meta($post_id, $meta_box['itemQuant']) == "") add_post_meta($post_id, $meta_box['itemQuant'], $data, true); elseif($data != get_post_meta($post_id, $meta_box['itemQuant'], true)) update_post_meta($post_id, $meta_box['itemQuant'], $data); elseif($data == "") delete_post_meta($post_id, $meta_box['itemQuant'], get_post_meta($post_id, $meta_box['itemQuant'], true)); } } /********************************************************/ /* WP 設定メニュー表示/投稿ページでの設定表示 */ /********************************************************/ add_action('admin_menu', 'create_welcart_entry'); add_action('save_post', 'entry_welcart_meta_save_postdata');
スポンサーリンク