概要
woocommerce_format_weight
関数はWooCommerceにおいて、商品重量を指定された単位でフォーマットするための関数です。主に、以下のような機能を実装する際によく使用されます:
- 商品詳細ページでの重量表示のカスタマイズ
- カート内の商品の重量表示
- 注文確認メールにおける商品重量の表示
- 配送オプションの選択時における重量の考慮
- プロダクトデータのエクスポート機能における重量表示
- 商品のフィルタリング機能における重量に基づくクエリ
構文
woocommerce_format_weight( $weight, $unit = '' );
パラメータ
$weight
(float) – フォーマットしたい重量の値。$unit
(string) – 必要に応じて指定する単位(例:’kg’, ‘lb’)。
戻り値
- (string) フォーマットされた重量の表示。
使用可能なプラグインバージョン
- WooCommerce: 3.0 以降
- WordPress: 4.0 以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: 商品詳細ページでの重量表示
このコードは、商品詳細ページでフォーマットされた重量を表示する例です。
add_action( 'woocommerce_single_product_summary', 'display_product_weight', 20 );
function display_product_weight() {
global $product;
$weight = $product->get_weight();
echo '<p>重量: ' . woocommerce_format_weight( $weight ) . '</p>';
}
引用元: https://www.wpbeginner.com
サンプル2: カート内商品の重量合計を表示
カートのフロントエンドで商品の合計重量を表示するサンプルです。
add_action( 'woocommerce_cart_totals_after_order_total', 'display_cart_total_weight' );
function display_cart_total_weight() {
$total_weight = 0;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$total_weight += (float) $product->get_weight() * $cart_item['quantity'];
}
echo '<tr><th>合計重量:</th><td>' . woocommerce_format_weight( $total_weight ) . '</td></tr>';
}
引用元: https://www.wplift.com
サンプル3: 注文確認メールへの重量追加
このコードは、注文確認メールに商品の重量を追加する例です。
add_action( 'woocommerce_email_order_meta', 'add_weight_to_order_email', 10, 3 );
function add_weight_to_order_email( $order, $sent_to_admin, $plain_text ) {
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
$weight = $product->get_weight();
echo '商品の重量: ' . woocommerce_format_weight( $weight ) . '<br>';
}
}
引用元: https://www.wpthemes.com
サンプル4: 配送オプションに重量を含める
配送オプションにおける重量情報を利用する例です。
add_filter( 'woocommerce_package_rates', 'customize_shipping_package_rates', 10, 2 );
function customize_shipping_package_rates( $rates, $package ) {
$total_weight = 0;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$total_weight += (float) $product->get_weight() * $cart_item['quantity'];
}
// ここで重量に基づいて配送オプションをカスタマイズ
// 例:重量が大きい場合は追加費用を加える等
return $rates;
}
引用元: https://www.sitepoint.com
サンプル5: 商品リストでの重量表示
商品アーカイブページで商品の重量を一覧表示するサンプルです。
add_action( 'woocommerce_after_shop_loop_item_title', 'display_product_list_weight', 5 );
function display_product_list_weight() {
global $product;
$weight = $product->get_weight();
if ( ! empty( $weight ) ) {
echo '<span class="product-weight">重量: ' . woocommerce_format_weight( $weight ) . '</span>';
}
}
引用元: https://www.themeisle.com