Dalam WooCommerce, paparkan metadata butiran pesanan dalam e-mel pengesahan pembayaran dan halaman pesanan pentadbir
P粉022140576
2023-08-15 12:06:40
Kami mempunyai beberapa produk yang ditakrifkan sebagai "kit". Ia adalah senarai produk yang terdiri daripada produk lain. Data yang mentakrifkan suite disimpan dalam tatasusunan metadata. Saya telah mencipta cangkuk untuk memaparkan metadata dalam halaman produk dan troli beli-belah. Saya perlu melakukan sesuatu yang serupa dalam "E-mel Pesanan Selesai" dan "Halaman Pesanan Pentadbiran" tetapi saya tidak tahu bagaimana untuk melakukannya. Ini cangkuk yang saya buat:
<pre class="brush:php;toolbar:false;">add_filter( 'bis_show_kit_meta', 'bis_show_kit_meta_contents', 10, 3 );
fungsi bis_show_kit_meta_contents($productID)
{
global $wpdb;
$postMeta = get_post_meta($productID,'',true);
if ((isset($postMeta['bis_kit_id'])) dan ($postMeta['bis_kit_id'][0] > 1)) {
echo 'Ini ialah Kit yang mengandungi item berikut:<br>';
echo $postMeta['bis_kit_type'][0].'<br>';
foreach($postMeta sebagai $kititem) {
foreach ($kititem sebagai $value) {
$newvalue = unserialize($value);
jika ($nilai baharu) {
$newvalue2 = unserialize($newvalue);
if($newvalue2['type']=="kititem"){
echo '<li>' .$newvalue2['kuantiti'].
}
}
}
}
}
}</pre>
Fungsi semasa sudah disambungkan ke templat yang sepadan dalam tema anak saya.
Saya tidak tahu cara menggunakan fungsi serupa pada fail <code>customer-completed-email.php</code>
Saya menjumpai beberapa kod dalam siaran lain yang kelihatan serupa dengan perkara yang perlu saya lakukan, tetapi saya tidak dapat mengetahui fail mana yang terdapat pengubahsuaian pada pesanan pentadbir.
Kod yang saya temui ialah:
<pre class="brush:php;toolbar:false;">add_action('woocommerce_before_order_itemmeta','woocommerce_before_order_itemmeta',10,3);
fungsi woocommerce_before_order_itemmeta($item_id, $item, $product){
...
}</pre>
Sebarang nasihat akan sangat dihargai
WooCommerce sudah mempunyai banyak cangkuk yang boleh anda gunakan dalam templat WooCommerce dan bukannya menambah sendiri...
Peraturan pembangunan yang baik ialah menggunakan cangkuk sedia ada dahulu. Jika tiada cangkuk yang mudah atau tersedia, maka anda boleh mengatasi templat WooCommerce melalui tema kanak-kanak. kenapa? Kerana templat kadangkala dikemas kini dan kemudian anda perlu mengemas kini templat yang diedit, sedangkan cangkuk tidak.
Untuk pemberitahuan "Pesanan Pelanggan Selesai", gunakan cangkuk
woocommerce_order_item_meta_end
action seperti ini:Ini akan membolehkan anda memaparkan metadata tersuai hanya dalam pemberitahuan "Pesanan Pelanggan Selesai".
Sebagai alternatif, anda boleh menggantikan cangkuk dengan satu
woocommerce_order_item_meta_start
dengan argumen pembolehubah fungsi yang sama.Letakkan kod dalam fail functions.php tema anak anda atau dalam pemalam.