在WooCommerce中,將訂單詳細資訊元資料顯示在結帳確認郵件和管理員訂單頁面中
P粉022140576
2023-08-15 12:06:40
我們有一些被定義為“套件”的產品。它們是由其他產品組成的產品清單。定義套件的資料儲存在元資料數組中。我創建了一個鉤子,用於在產品頁面和購物車中顯示元資料。我需要在「完成的訂單電子郵件」和「管理員訂單頁面」中做類似的事情,但我不知道如何做。這是我創建的鉤子:
<pre class="brush:php;toolbar:false;">add_filter( 'bis_show_kit_meta', 'bis_show_kit_meta_contents', 10, 3 );
function bis_show_kit_meta_contents($productID)
{
global $wpdb;
$postMeta = get_post_meta($productID,'',true);
if ((isset($postMeta['bis_kit_id'])) and ($postMeta['bis_kit_id'][0] > 1)) {
echo 'This is a Kit containing the following items:<br>';
echo $postMeta['bis_kit_type'][0].'<br>';
foreach($postMeta as $kititem) {
foreach ($kititem as $value) {
$newvalue = unserialize($value);
if ($newvalue) {
$newvalue2 = unserialize($newvalue);
if($newvalue2['type']=="kititem"){
echo '<li>' .$newvalue2['quantity']. ' -> ' .chr(9). $newvalue2['name']. '</li>';
}
}
}
}
}
}</pre>
當前函數已經鉤入了我的子主題中的對應模板。
我不知道如何將類似的函數應用於<code>customer-completed-email.php</code>文件,也不知道在管理員編輯訂單頁面中應該在哪裡鉤入。
我在另一篇文章中找到了一些程式碼,看起來類似於我需要做的事情,但我無法弄清楚管理員訂單的修改在哪個文件中。
我找到的程式碼是:
<pre class="brush:php;toolbar:false;">add_action('woocommerce_before_order_itemmeta','woocommerce_before_order_itemmeta',10,3);
function woocommerce_before_order_itemmeta($item_id, $item, $product){
…
}</pre>
非常感謝任何建議
WooCommerce已經有了一堆鉤子,你可以在WooCommerce模板中使用它們,而不是添加自己的鉤子...
良好的開發規則是先使用現有的鉤子。如果沒有方便或可用的鉤子,那麼你可以透過子主題覆蓋WooCommerce模板。為什麼?因為模板有時會更新,然後你需要更新編輯過的模板,而鉤子則不需要。
對於「客戶完成訂單」通知,請使用
woocommerce_order_item_meta_end
動作鉤子,如下所示:這將允許你只在「客戶完成訂單」通知中顯示自訂元資料。
或者,你可以將鉤子替換為具有相同函數變數參數的
woocommerce_order_item_meta_start
。將程式碼放在你的子主題的functions.php檔案中或外掛中。