Hãy chỉnh sửa code giúp tôi, các trường không hiển thị lên bảng table.
Please revise the code for me; the fields are not displaying on the table.
Link field phone:/wp-admin/post.php?post=653730&action=edit
Link field campany: /wp-admin/post.php?post=653732&action=edit
Link b2bking conversation: /wp-admin/edit.php?post_type=b2bking_conversation
// Add custom meta box to b2bking_conversation post type
function add_b2bking_custom_fields_meta_box() { add_meta_box( 'b2bking_conversation_fields', // Meta box ID 'Conversation Details', // Meta box Title 'render_b2bking_custom_fields_meta_box', // Callback function 'b2bking_conversation', // Post type 'normal', // Context 'high' // Priority );
}
add_action('add_meta_boxes', 'add_b2bking_custom_fields_meta_box');
// Render Meta Box content
function render_b2bking_custom_fields_meta_box($post) { // Add nonce for security wp_nonce_field('b2bking_custom_fields_nonce', 'b2bking_custom_fields_nonce');
// Get existing values $company_name = get_post_meta($post->ID, 'b2bking_custom_field_653732', true); $customer_email = get_post_meta($post->ID, 'b2bking_request_custom_quote_email', true); $customer_phone = get_post_meta($post->ID, 'b2bking_custom_field_653730', true); ?> <div style="margin: 20px 0;"> <p> <label style="display: block; margin-bottom: 5px;"><strong>Company Name:</strong></label> <input type="text" name="b2bking_custom_field_618469" value="<?php echo esc_attr($company_name); ?>" style="width: 100%;"> </p> <p> <label style="display: block; margin-bottom: 5px;"><strong>Customer Email:</strong></label> <input type="email" name="b2bking_request_custom_quote_email" value="<?php echo esc_attr($customer_email); ?>" style="width: 100%;"> </p> <p> <label style="display: block; margin-bottom: 5px;"><strong>Customer Phone:</strong></label> <input type="text" name="b2bking_custom_field_617057" value="<?php echo esc_attr($customer_phone); ?>" style="width: 100%;"> </p> </div> <?php
}
// Save Meta Box data
function save_b2bking_custom_fields_meta($post_id) { // Check if nonce is set and valid if (!isset($_POST['b2bking_custom_fields_nonce']) || !wp_verify_nonce($_POST['b2bking_custom_fields_nonce'], 'b2bking_custom_fields_nonce')) { return; }
// Check if autosaving if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; }
// Check user permissions if (!current_user_can('edit_post', $post_id)) { return; }
// Check if correct post type if (get_post_type($post_id) !== 'b2bking_conversation') { return; }
// Save company name if (isset($_POST['b2bking_custom_field_653732'])) { $company_name = sanitize_text_field($_POST['b2bking_custom_field_653732']); update_post_meta($post_id, 'b2bking_custom_field_653732', $company_name); update_post_meta($post_id, 'b2bking_custom_field_653732', $company_name); }
// Save customer email if (isset($_POST['b2bking_request_custom_quote_email'])) { $customer_email = sanitize_email($_POST['b2bking_request_custom_quote_email']); update_post_meta($post_id, 'b2bking_request_custom_quote_email', $customer_email); update_post_meta($post_id, '_b2bking_request_custom_quote_email', $customer_email); }
// Save customer phone if (isset($_POST['b2bking_custom_field_653730'])) { $customer_phone = sanitize_text_field($_POST['b2bking_custom_field_653730']); update_post_meta($post_id, 'b2bking_custom_field_653730', $customer_phone); update_post_meta($post_id, 'b2bking_custom_field_653730', $customer_phone); }
}
add_action('save_post', 'save_b2bking_custom_fields_meta');
function custom_b2bking_show_column_data($column, $post_id) { switch ($column) { case 'company_name': // Lấy dữ liệu từ post meta $company_name = get_post_meta($post_id, 'b2bking_custom_field_653732', true); if (empty($company_name)) { $company_name = get_post_meta($post_id, '_b2bking_custom_field_653732', true); } echo !empty($company_name) ? esc_html($company_name) : 'N/A'; break;
case 'customer_email': $customer_email = get_post_meta($post_id, 'b2bking_request_custom_quote_email', true); if (empty($customer_email)) { $customer_email = get_post_meta($post_id, '_b2bking_request_custom_quote_email', true); } echo !empty($customer_email) ? esc_html($customer_email) : 'N/A'; break;
case 'customer_phone': $customer_phone = get_post_meta($post_id, 'b2bking_custom_field_653730', true); if (empty($customer_phone)) { $customer_phone = get_post_meta($post_id, '_b2bking_custom_field_653730', true); } echo !empty($customer_phone) ? esc_html($customer_phone) : 'N/A'; break; }
}
add_action('manage_b2bking_conversation_posts_custom_column', 'custom_b2bking_show_column_data', 10, 2);
// 2️⃣ Thêm các cột mới vào bảng Conversations
function custom_b2bking_add_columns($columns) { $columns['company_name'] = __('Tên Công Ty', 'b2bking'); $columns['customer_email'] = __('Email', 'b2bking'); $columns['customer_phone'] = __('Số Điện Thoại', 'b2bking'); return $columns;
}
add_filter('manage_edit-b2bking_conversation_columns', 'custom_b2bking_add_columns');
How to code display add field in 3 column. ( Số điện thoại - phone, email custum, Tên Công ty - Comnany )
Closed
Comments
Hi Hung,
Thanks for reaching out! I think there are a few issues in your code that are preventing the fields from displaying correctly in the table.
Here are the main fixes needed:
1. In your `render_b2bking_custom_fields_meta_box` function, the input field names don't match the meta keys. They should be:
name="b2bking_custom_field_653732" // for company name (not 618469) name="b2bking_custom_field_653730" // for phone (not 617057)
2. For proper column sorting, you should add this filter:
add_filter('manage_edit-b2bking_conversation_sortable_columns', function($columns) {
$columns['company_name'] = 'company_name';
$columns['customer_email'] = 'customer_email';
$columns['customer_phone'] = 'customer_phone';
return $columns;
});
3. Make sure to position your new columns correctly by modifying the columns array order in `custom_b2bking_add_columns`:
function custom_b2bking_add_columns($columns) {
$new_columns = array();
foreach($columns as $key => $title) {
if ($key === 'title') { // Insert after title column
$new_columns[$key] = $title;
$new_columns['company_name'] = __('Tên Công Ty', 'b2bking');
$new_columns['customer_email'] = __('Email', 'b2bking');
$new_columns['customer_phone'] = __('Số Điện Thoại', 'b2bking');
} else {
$new_columns[$key] = $title;
}
}
return $new_columns;
}
Try implementing these changes and let me know if you still have any issues!
Kind regards,
Stefan