質問編集履歴
4
誤字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
### ソースコード
|
25
25
|
SKUに重量のカスタム項目を追加する部分
|
26
26
|
functions.phpに記述しています。
|
27
|
-
```
|
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
|
-
```
|
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
情報の追加
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
わかりやすく修正
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
情報の追加
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;
|