Как добавить настраиваемое поле на страницу редактирования заказа - PullRequest
1 голос
/ 25 апреля 2020

Я гуглял и искал здесь простой способ добавить пустое поле на страницу редактирования заказов. Мы будем использовать это, чтобы указать отправку от нашего курьера.

Мы бы добавили его в примечания к заказу, но мы хотим, чтобы он был доступен для поиска, а также добавили его в виде столбца на странице администрирования заказов (у меня есть плагин Admin Columns, который, я думаю, может сделать этот бит , Мне просто нужно добавить это поле для начала).

Надеюсь, кто-то может помочь, спасибо!

РЕДАКТИРОВАТЬ:

Я нашел этот вопрос, который кажется похожим, но сложнее, чем то, что я ищу, и я не могу понять, как это упростить. Добавить пользовательский мета-блок на страницах редактирования заказа и отобразить его на страницах заказа клиента.

Мне не нужно ничего, что будет отображаться на клиентской стороне, как это. Просто простое пустое поле, которое отображается на каждой странице редактирования заказа (возможно, под примечаниями к заказу), в котором можно выполнить поиск. Затем я покажу его в столбце на странице администрирования заказа.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Удалось получить ответ, это прекрасно работает!

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

1 голос
/ 25 апреля 2020

enter image description here

Используйте настраиваемое поле WooCommerce по умолчанию в нижнем разделе страницы редактирования заказа.

enable custom field to get this option

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...