teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

誤字の修正

2018/12/28 02:59

投稿

tks8888
tks8888

スコア10

title CHANGED
File without changes
body CHANGED
@@ -24,7 +24,7 @@
24
24
  ### ソースコード
25
25
  SKUに重量のカスタム項目を追加する部分
26
26
  functions.phpに記述しています。
27
- ```html
27
+ ```PHP
28
28
  add_filter( 'usces_filter_sku_meta_form_advance_title', 'add_new_sku_meta_title'); //項目を追加
29
29
  function add_new_sku_meta_title(){
30
30
  return '<th colspan="2">カスタム項目</th>';
@@ -65,7 +65,7 @@
65
65
 
66
66
  重量で送料を再計算する部分
67
67
  functions.phpに記述しています。
68
- ```html
68
+ ```PHP
69
69
  // 重量2までを1個口として送料を重量で計算しなおす
70
70
  add_filter('usces_filter_set_cart_fees_shipping_charge', 'custom_filter_set_shipping_charge', 10, 3);
71
71
  function custom_filter_set_shipping_charge($shipping_charge, $carts, $entries){

3

情報の追加

2018/12/28 02:59

投稿

tks8888
tks8888

スコア10

title CHANGED
File without changes
body CHANGED
@@ -19,8 +19,52 @@
19
19
  次のサイトを参考に、個口数を計算して、送り先の都道府県別送料×個口数で送料を出そうとしたが、SKUに追加した重量を取得すると値が0になっていて正しい値が取得できない。
20
20
  https://teratail.com/questions/100686
21
21
 
22
+ var_dump($carts);で出力を確認したところ、 「["advance"]=> string(0) ""」となっていて重量のカスタム項目が正しく保存されていないのか、取得できていない状況。
23
+
22
24
  ### ソースコード
25
+ SKUに重量のカスタム項目を追加する部分
26
+ functions.phpに記述しています。
27
+ ```html
28
+ add_filter( 'usces_filter_sku_meta_form_advance_title', 'add_new_sku_meta_title'); //項目を追加
29
+ function add_new_sku_meta_title(){
30
+ return '<th colspan="2">カスタム項目</th>';
31
+ }
23
32
 
33
+ add_filter( 'usces_filter_sku_meta_form_advance_field', 'add_new_sku_meta_field'); //フィールドを新規追加
34
+ function add_new_sku_meta_field(){
35
+ return '<td colspan="2" class="item-sku-zaikonum"><input name="newskuadvance" type="text" id="newskuadvance" class="newskuadvance metaboxfield" /></td>'."n";
36
+ }
37
+
38
+ add_filter( 'usces_filter_sku_meta_row_advance', 'add_new_sku_meta_row_advance',10,2); //フィールドを追加
39
+ function add_new_sku_meta_row_advance( $default_field, $sku ){
40
+ $metaname = 'itemsku[' .$sku["meta_id"]. '][skuadvance]';
41
+ return '<td colspan="2" class="item-sku-zaikonum"><input name="' .$metaname.'" type="text" id="' .$metaname. '" class="newskuadvance metaboxfield" value="' .$sku["advance"]. '"/></td>'."n";
42
+ }
43
+
44
+ add_filter( 'usces_filter_add_item_sku_meta_value', 'add_new_sku_meta'); //新規項目を作成
45
+ function add_new_sku_meta($value){
46
+ $skuadvance = isset($_POST['newskuadvance']) ? $_POST['newskuadvance'] : '';
47
+ $value['advance'] = $skuadvance;
48
+ return $value;
49
+ }
50
+
51
+ add_filter( 'usces_filter_up_item_sku_meta_value', 'up_new_sku_meta'); //項目を変更
52
+ function up_new_sku_meta($value){
53
+ $skuadvance = isset($_POST['skuadvance']) ? $_POST['skuadvance'] : '';
54
+ $value['advance'] = $skuadvance;
55
+ return $value;
56
+ }
57
+
58
+ add_filter( 'usces_filter_item_save_sku_metadata', 'save_new_sku_meta',10,2 ); //項目を保持
59
+ function save_new_sku_meta( $skus, $mid ){
60
+ $skuadvance = isset($_POST['itemsku'][$mid]['skuadvance']) ? $_POST['itemsku'][$mid]['skuadvance']: '';
61
+ $skus['advance'] = $skuadvance;
62
+ return $skus;
63
+ }
64
+ ```
65
+
66
+ 重量で送料を再計算する部分
67
+ functions.phpに記述しています。
24
68
  ```html
25
69
  // 重量2までを1個口として送料を重量で計算しなおす
26
70
  add_filter('usces_filter_set_cart_fees_shipping_charge', 'custom_filter_set_shipping_charge', 10, 3);
@@ -37,4 +81,5 @@
37
81
  ### 補足情報(FW/ツールのバージョンなど)
38
82
 
39
83
  WordPress 5.0.2
40
- PHP 7.3.0
84
+ PHP 7.3.0
85
+ Welcart 1.9.14

2

わかりやすく修正

2018/12/28 01:05

投稿

tks8888
tks8888

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- WordPressプラグインのWelcartで送料を商品の重量(個口数)で設定するためのカスタマイズ
1
+ WordPressプラグインのWelcartで送料を商品の重量(個口数)で設定するためのカスタマイズでSKUの重量が取得できない
body CHANGED
@@ -7,8 +7,7 @@
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
9
  検索して調べて、SKUに重量を設定するところまではできたが、注文された商品の重量の合計を取得する方法がわからない。
10
- SKUで設定した重量が保存されていないようで、取得しても空欄になってしまう。
10
+ SKUで設定した重量が保存されていないのか、取得方法が間違っているようで、取得しても空欄になってしまう。
11
- また、送り先の都道府県別の送料の取得方法がわからない。
12
11
 
13
12
  ### 試したこと
14
13
 

1

情報の追加

2018/12/27 09:24

投稿

tks8888
tks8888

スコア10

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,7 @@
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
9
  検索して調べて、SKUに重量を設定するところまではできたが、注文された商品の重量の合計を取得する方法がわからない。
10
+ SKUで設定した重量が保存されていないようで、取得しても空欄になってしまう。
10
11
  また、送り先の都道府県別の送料の取得方法がわからない。
11
12
 
12
13
  ### 試したこと
@@ -16,7 +17,7 @@
16
17
 
17
18
  ここで設定した重量をもとに、個口数を計算して、送り先の都道府県別送料×個口数で送料を出したいができていない。
18
19
 
19
- 次のサイトを参考に、個口数を計算して、送り先の都道府県別送料×個口数で送料を出そうとしたが、送り先の都道府県別送料を取得する方法わかりません
20
+ 次のサイトを参考に、個口数を計算して、送り先の都道府県別送料×個口数で送料を出そうとしたが、SKUに追加した重量を取得すると値0になっていて正しい値が取得できない
20
21
  https://teratail.com/questions/100686
21
22
 
22
23
  ### ソースコード
@@ -28,7 +29,7 @@
28
29
 
29
30
  $weight = 0;
30
31
  foreach($carts as $cart){
31
- $weight += $cart['advance']; //重量を加算
32
+ $weight += $cart['advance']; //重量を加算したいが、$cart['advance']の値が0になっている
32
33
  }
33
34
  $shipping_charge = intval( $weight / 2 + 0.5 ) * $shipping_charge;
34
35
  return $shipping_charge;