我迅速浏览了Stack Overflow上的其他五篇文章,试图修改正确答案的代码。Some of them looked promising,但它们都没有产生预期的结果。因此,我决定从头开始。
我的目标是:
- 在WooCommerce订单页面上添加列。
- 访问mywebsite.com/wp-admin/edit.php?post_type=shop_order并查看日期栏
- 在该列中包括预订开始日期和预订结束日期。
- 每笔订单只有一次预订 *
以下是我迄今为止开发的将列添加到订单页面的代码:
// Add custom column to WooCommerce admin orders page
function custom_add_booking_dates_column($columns) {
// Add the custom column after the "Order Actions" column
$columns['booking_dates'] = __('Booking Dates', 'text-domain');
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'custom_add_booking_dates_column');
// Populate the custom column with "Testing" text
function custom_populate_booking_dates_column($column) {
global $post;
if ($column === 'booking_dates') {
// Output the text you want to display in the custom column
echo 'Testing';
}
}
add_action('manage_shop_order_posts_custom_column', 'custom_populate_booking_dates_column');
我尝试过的事情:
- 编辑wp-config并增加内存
- 打开调试以解决问题(出现
wc_booking_order_has_bookings
错误) - 在子主题功能中加载WooCommerce和WooCommerce预订
- 从插件复制一些文件到子主题并编辑
/woocommerce-bookings/order/admin/booking-display.php
和booking-summary-list.php
文件
我还尝试了所有的代码例子,我发现在SO和GPT分析和编写一个函数,但一切都产生了太,是不好的。
// Add custom column to WooCommerce admin orders page
function custom_add_booking_dates_column($columns) {
// Add the custom column after the 'order_actions' column
$columns['booking_dates'] = __('Booking Dates', 'text-domain');
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'custom_add_booking_dates_column');
// Populate the custom column with data
function custom_booking_dates_column_content($column, $post_id) {
if ($column == 'booking_dates') {
// Retrieve booking dates for the order (replace this with your own logic)
$booking_dates = get_post_meta($post_id, '_booking_dates', true);
// Display the booking dates
echo esc_html($booking_dates);
}
}
add_action('manage_shop_order_posts_custom_column', 'custom_booking_dates_column_content', 10, 2);
add_action('after_setup_theme', 'child_theme_setup');
function child_theme_setup() {
// Load WooCommerce
add_theme_support('woocommerce');
// Load WooCommerce Bookings
add_theme_support('woocommerce-bookings');
}
// Add custom column to WooCommerce admin orders page
function add_custom_column_to_orders_page($columns) {
// Add a new column called "Booking Dates" after the "Order Total" column
$columns['booking_dates'] = __('Booking Dates', 'text-domain');
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'add_custom_column_to_orders_page', 20);
// Populate custom column with Booking Start and Booking End dates
function populate_custom_column_content($column) {
global $post, $the_order;
if ($column === 'booking_dates') {
$order_id = $post->ID;
// Check if the order has booking data
if (wc_booking_order_has_bookings($order_id)) {
$booking_data = wc_get_order($order_id)->get_items('booking');
// Loop through each booking item (there may be multiple bookings in one order)
foreach ($booking_data as $item_id => $booking_item) {
$booking_start = date_i18n(wc_date_format(), strtotime($booking_item['Start']));
$booking_end = date_i18n(wc_date_format(), strtotime($booking_item['End']));
// Display Booking Start and End dates for each booking
echo '<strong>' . __('Booking #', 'text-domain') . $booking_item['Booking ID'] . '</strong><br>';
echo __('Start Date:', 'text-domain') . ' ' . esc_html($booking_start) . '<br>';
echo __('End Date:', 'text-domain') . ' ' . esc_html($booking_end) . '<br>';
}
} else {
echo __('No booking data', 'text-domain');
}
}
}
add_action('manage_shop_order_posts_custom_column', 'populate_custom_column_content');
1条答案
按热度按时间ie3xauqp1#
请避免在这里使用ChatGPT生成的代码。尝试用以下代码替换您的代码:
应该可以的