Okay
  Public Ticket #3846071
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

  •  3
    Hung started the conversation

    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');
    

    Attached files:  image_table_show_data.png
      field_phone_and_field_company.png

  •  2,361
    WebWizards replied

    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