WooCommerce Hook:

參考文章:WooCommerce Hooks: Introduction, Tutorial, and Real-Life Examples

參考文章:WooCommerce Visual Hook Guide: Single Product Page

呈現

前台
後台

ACF設定

新增群組,並在下方設定文字欄位

程式碼設定

接下來將代碼放在function.php或是Code Snippets

//CSS
add_action( 'wp_head', function () { ?>
<style>
	div.acf-product-extensions table{
		font-size:13px;
	}
</style>
<?php } );

//商品額外資訊
add_action( 'woocommerce_after_single_product', 'shop_custom_product_extensions_field', 30 );
  
function shop_custom_product_extensions_field() {
	
	$extensions01 = get_field('product-extensions_product-extensions01');
	$extensions01_d = get_field_object('product-extensions_product-extensions01');
	$extensions01_t = $extensions01_d['label'];
	
	$extensions02 = get_field('product-extensions_product-extensions02');
	$extensions02_d = get_field_object('product-extensions_product-extensions02');
	$extensions02_t = $extensions02_d['label'];
	
	$extensions03 = get_field('product-extensions_product-extensions03');
	$extensions03_d = get_field_object('product-extensions_product-extensions03');
	$extensions03_t = $extensions03_d['label'];
	
	$extensions04 = get_field('product-extensions_product-extensions04');
	$extensions04_d = get_field_object('product-extensions_product-extensions04');
	$extensions04_t = $extensions04_d['label'];
	
	$extensions05 = get_field('product-extensions_product-extensions05');
	$extensions05_d = get_field_object('product-extensions_product-extensions05');
	$extensions05_t = $extensions05_d['label'];
	
	//如果有商品名稱,才會顯示表格
	if($extensions01_t['value']){	
		echo "<div class='acf-product-extensions' style='background:#f9f9f9; margin:20px 0 0 0;'>
		<table>
		<tr><td width='15%'>$extensions01_t</td> <td width='85%'>$extensions01</td></tr>
		<tr><td>$extensions02_t</td> <td>$extensions02</td></tr>
		<tr><td>$extensions03_t</td> <td>$extensions03</td></tr>
		<tr><td>$extensions04_t</td> <td>$extensions04</td></tr>
		<tr><td>$extensions05_t</td> <td>$extensions05</td></tr>
		</table>
		</div>";
	}
}

程式碼說明

群組的欄位名稱為 product-extensions

下面5個欄位的欄位名稱分別是product-extensions01、product-extensions02、product-extensions03、product-extensions04、product-extensions05

程式碼:$extensions01 = get_field(‘product-extensions_product-extensions01’);
是用變數 $extensions01 抓取在product-extensions群組內 product-extensions01 的欄位資料(value)
所以抓取到的就是商品名稱欄位的內容

程式碼:$extensions01_d = get_field_object(‘product-extensions_product-extensions01’);
是用變數 $extensions01_d 抓取在 product-extensions01 內的所有資料
包含Label(標籤)、ID、Key、Value…等內容

並使用程式碼:$extensions01_t = $extensions01_d[‘label’];
提取出 product-extensions01 欄位的標籤

最後才能在表格裡 <tr><td>$extensions01_t</td> <td>$extensions01</td></tr>
直接用變數抓取並呈現欄位的標籤名稱+欄位內容

Ps.如果直接使用 $extensions01_t = $extensions01[‘label’]; 的話
抓取出的數值會是亂碼,所以才需要額外多一個 get_field_object 的步驟

最後修改日期: 2022 年 10 月 20 日

作者