gpt4 book ai didi

php - WooCommerce 管理订单页面具有多个自定义字段的 Metabox

转载 作者:行者123 更新时间:2023-12-04 10:07:49 25 4
gpt4 key购买 nike

前几天我找到了下面的代码,现在我的客户想要另外两个字段。如果我再次将它添加到我的代码段插件中,它会显示“无法重新声明函数 set_custom_edit_shop_order_columns。”。有人可以帮助我用另外两个自定义字段更改代码吗?

我已将 custom_column 更改为 courier_reference 并希望使用另一个文本字段 tracking_number,还有一个是带有日期选择器而不是文本框的 shipping_date。

任何帮助表示赞赏。

//from::https://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column

// For displaying in columns.

add_filter( 'manage_edit-shop_order_columns', 'set_custom_edit_shop_order_columns' );
function set_custom_edit_shop_order_columns($columns) {
$columns['custom_column'] = __( 'Custom Column', 'your_text_domain' );
return $columns;
}

// Add the data to the custom columns for the order post type:
add_action( 'manage_shop_order_posts_custom_column' , 'custom_shop_order_column', 10, 2 );
function custom_shop_order_column( $column, $post_id ) {
switch ( $column ) {

case 'custom_column' :
echo esc_html( get_post_meta( $post_id, 'custom_column', true ) );
break;

}
}

// For display and saving in order details page.
add_action( 'add_meta_boxes', 'add_shop_order_meta_box' );
function add_shop_order_meta_box() {

add_meta_box(
'custom_column',
__( 'Custom Column', 'your_text_domain' ),
'shop_order_display_callback',
'shop_order'
);

}

// For displaying.
function shop_order_display_callback( $post ) {

$value = get_post_meta( $post->ID, 'custom_column', true );

echo '<textarea style="width:100%" id="custom_column" name="custom_column">' . esc_attr( $value ) . '</textarea>';
}

// For saving.
function save_shop_order_meta_box_data( $post_id ) {

// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}

// Check the user's permissions.
if ( isset( $_POST['post_type'] ) && 'shop_order' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_shop_order', $post_id ) ) {
return;
}
}

// Make sure that it is set.
if ( ! isset( $_POST['custom_column'] ) ) {
return;
}

// Sanitize user input.
$my_data = sanitize_text_field( $_POST['custom_column'] );

// Update the meta field in the database.
update_post_meta( $post_id, 'custom_column', $my_data );
}

add_action( 'save_post', 'save_shop_order_meta_box_data' );

最佳答案

更新... 您只需要在相同的函数中有多个不同的 slug。对于您想要的 3 个自定义字段,请使用以下内容:

// Add columns to admin orders table.
add_filter( 'manage_edit-shop_order_columns', 'set_custom_edit_shop_order_columns' );
function set_custom_edit_shop_order_columns($columns) {
$columns['courier_reference'] = __( 'Courier reference', 'woocommerce' );
$columns['tracking_number'] = __( 'Tracking number', 'woocommerce' );
$columns['shipping_date'] = __( 'Shipping date', 'woocommerce' );
return $columns;
}

// Add the data to the custom columns for the order post type:
add_action( 'manage_shop_order_posts_custom_column' , 'custom_shop_order_column', 10, 2 );
function custom_shop_order_column( $column, $post_id ) {
switch ( $column ) {

case 'courier_reference' :
echo esc_html( get_post_meta( $post_id, 'courier_reference', true ) );
break;

case 'tracking_number' :
echo esc_html( get_post_meta( $post_id, 'tracking_number', true ) );
break;

case 'shipping_date' :
echo esc_html( get_post_meta( $post_id, 'shipping_date', true ) );
break;

}
}

// Add a metabox.
add_action( 'add_meta_boxes', 'add_shop_order_meta_box' );
function add_shop_order_meta_box() {

add_meta_box(
'custom_meta_box',
__( 'Tracking information', 'woocommerce' ),
'shop_order_content_callback',
'shop_order'
);

}

// For displaying metabox content
function shop_order_content_callback( $post ) {

// Textarea Field
$courier_reference = get_post_meta( $post->ID, 'courier_reference', true );

echo '<p>' . __( 'Courier reference', 'woocommerce' ) . '<br>
<textarea style="width:100%" id="courier_reference" name="courier_reference">' . esc_attr( $courier_reference ) . '</textarea></p>';

// Text field
$tracking_number = get_post_meta( $post->ID, 'tracking_number', true );
echo '<p>' . __( 'Tracking number', 'woocommerce' ) . '<br>
<input type="text" style="width:100%" id="tracking_number" name="tracking_number" value="' . esc_attr( $tracking_number ) . '"></p>';

// Date picker field
$shipping_date = get_post_meta( $post->ID, 'shipping_date', true );

echo '<p>' . __( 'shipping_date', 'woocommerce' ) . '<br>
<input type="date" style="width:100%" id="shipping_date" name="shipping_date" value="' . esc_attr( $shipping_date ) . '"></p>';
}

// For saving the metabox data.
add_action( 'save_post_shop_order', 'save_shop_order_meta_box_data' );
function save_shop_order_meta_box_data( $post_id ) {

// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}

// Check the user's permissions.
if ( ! current_user_can( 'edit_shop_order', $post_id ) ) {
return;
}


// Make sure that 'shipping_date' is set.
if ( isset( $_POST['courier_reference'] ) ) {

// Update the meta field in the database.
update_post_meta( $post_id, 'courier_reference', sanitize_textarea_field( $_POST['courier_reference'] ) );
}

// Make sure that 'tracking_number' it is set.
if ( isset( $_POST['tracking_number'] ) ) {

// Update the meta field in the database.
update_post_meta( $post_id, 'tracking_number', sanitize_text_field( $_POST['tracking_number'] ) );
}

// Make sure that 'shipping_date' is set.
if ( isset( $_POST['shipping_date'] ) ) {

// Update the meta field in the database.
update_post_meta( $post_id, 'shipping_date', sanitize_text_field( $_POST['shipping_date'] ) );
}
}

代码位于事件子主题(或事件主题)的 functions.php 文件中。测试和工作。

关于php - WooCommerce 管理订单页面具有多个自定义字段的 Metabox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61484086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com