【发布时间】:2018-06-27 10:07:22
【问题描述】:
我在结帐页面中为 Woocommerce 创建了一些自定义字段。我能够在 WP 管理区域、电子邮件和发票中显示它们,但不能在用户仪表板的前端显示它们。
这是我用于在function.php 文件的 CHILD-THEM 中创建字段“CODICE SNEP”的代码:
// Create hook - CODICE SNEP
add_filter( 'woocommerce_checkout_fields' , 'codice_snep' );
function codice_snep ( $fields ) {
$fields['billing']['codice_snep'] = array(
'label' => __('Codice Snep', 'woocommerce'),
'placeholder' => _x('Codice Snep', 'placeholder', 'woocommerce'),
'required' => true,
'clear' => true
);
return $fields;
}
add_action( 'woocommerce_checkout_update_order_meta', 'codice_snep_order_meta' );
function codice_snep_order_meta( $order_id ) {
if ( ! empty( $_POST['codice_snep'] ) ) {
update_post_meta( $order_id, 'Codice Snep', sanitize_text_field( $_POST['codice_snep'] ) );
}
}
// Save the custom field 'codice_snep'
add_action( 'woocommerce_save_account_details', 'save_codice_snep_account_details', 12, 1 );
function save_codice_snep_account_details( $user_id ) {
// For Codice Snep
if( isset( $_POST['codice_snep'] ) )
update_user_meta( $user_id, 'codice_snep', sanitize_text_field( $_POST['codice_snep'] ) );
}
之后,如果您不输入该字段,我会显示错误:
// Show error if you don't insert CODICE SNEP
add_action('woocommerce_checkout_process', 'required_codice_snep_checkout_field_process');
function required_codice_snep_checkout_field_process() {
// Check if set, if its not set add an error.
if ( ! $_POST['codice_snep'] )
wc_add_notice( __( 'Compila il campo Codice SNEP .' ), 'error' );
}
比我在 WC 管理区、电子邮件和发票中显示代码:
// Show field codice snep in the Wc pdf invoices plugin
add_action( 'wpo_wcpdf_after_order_data', 'wpo_wcpdf_codice_snep', 10, 2 );
function wpo_wcpdf_codice_snep ($template_type, $order) {
$document = wcpdf_get_document( $template_type, $order );
if ($template_type == 'invoice') {
?>
<tr>
<th>Codice Snep:</th>
<td><?php $document->custom_field('Codice Snep'); ?></td>
</tr>
<?php
}
}
// Show CODICE SNEP in Back End Wp
add_action( 'woocommerce_admin_order_data_after_billing_address', 'codice_snep_order_meta_admin', 10, 1 );
function codice_snep_order_meta_admin($order){
echo '<p><strong>'.__('Codice Snep').':</strong> ' . get_post_meta( $order->id, 'Codice Snep', true ) . '</p>';
}
// Show codoce snep in the order email
add_filter('woocommerce_email_order_meta_keys', 'my_custom_codice_snep_order_meta_keys');
function my_custom_codice_snep_order_meta_keys( $keys ) {
$keys[] = 'Codice Snep';
return $keys;
}
到这里为止似乎一切正常。
现在的问题是只在仪表板前端显示(必须不可编辑)此字段 (codice_snep)。
现在我正在尝试这个,但我只能看到没有字段值的标签。
// Show codice snep in the Dashboard of the user in front-end.
add_action( 'woocommerce_account_dashboard', 'codice_snep_order_dashboard', 12, 1 );
function codice_snep_order_dashboard ($order){
echo '<p><strong>'.__('Codice Snep').':</strong> ' . get_post_meta( $order->id, 'Codice Snep', true ) . '</p>';
}
会发生这种情况:Field not showing on dashboard
您能帮我解决这个问题以显示用户在结帐时插入的value 吗?
【问题讨论】:
-
请删除所有非英文无关代码cmets
-
对不起@MikhailKholodkov!我删除了所有非英文代码 cmets
-
你好...有人可以帮助我吗?
标签: php wordpress woocommerce custom-fields orders