Показать примечания к заказу с автором и датой в списке заказов администратора Woocommerce - PullRequest
0 голосов
/ 11 апреля 2020

Использование " Отобразить назад примечания к заказам в списке заказов администратора в WooCommerce 3.3 " код ответа, я могу добавить столбец примечаний к заказу в списке заказов администратора, но это только показывает, что статус изменен с одного состояния на другое.

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

Есть предложения?

1 Ответ

0 голосов
/ 11 апреля 2020

Нет необходимости использовать global $post, $the_order; с manage_shop_order_posts_custom_column. Это связано с тем, что существует второй параметр, который содержит $post_id


$latest_note содержит больше, чем только примечание, также среди прочего доступны автор и дата.


Согласно правилам техники, добавьте CSS через таблицу стилей, а не через admin_head


Всегда приятно посмотреть, нашли ли вы код и хотите ли вы добавить дополнительные функциональные возможности. Сначала попробуйте, прежде чем обратиться за помощью

Чтобы ответить на ваш вопрос, примените следующее

function custom_shop_order_column( $columns ) {
    $ordered_columns = array();

    foreach( $columns as $key => $column ){
        $ordered_columns[$key] = $column;
        if( 'order_date' == $key ){
            $ordered_columns['order_notes'] = __( 'Notes', 'woocommerce');
        }
    }

    return $ordered_columns;
}
add_filter( 'manage_edit-shop_order_columns', 'custom_shop_order_column', 10, 1 );


function custom_shop_order_list_column_content( $column, $post_id ) {

    // Get $order object
    $order = wc_get_order( $post_id );

    if ( $column == 'order_notes' ) {

        if ( $order->get_customer_note() ) {
            echo '<span class="note-on customer tips" data-tip="' . wc_sanitize_tooltip( $order->get_customer_note() ) . '">' . __( 'Yes', 'woocommerce' ) . '</span>';
        }

        // Retrieves the amount of comments a post has.
        $amount_of_comments = get_comments_number( $post_id );

        if ( $amount_of_comments > 0 ) {

            $latest_notes = wc_get_order_notes( array(
                'order_id' => $post_id,
                'limit'    => 1,
                'orderby'  => 'date_created_gmt',
            ) );

            $latest_note = current( $latest_notes );

            // Content
            $content = $latest_note->content;

            // Added by
            $added_by = $latest_note->added_by;

            // Date created - https://www.php.net/manual/en/function.date.php
            $date_created = $latest_note->date_created->date('j F Y - g:i:s');

            if ( isset( $content ) && $amount_of_comments == 1 ) {
                echo '<span class="note-on tips" data-tip="' . wc_sanitize_tooltip( 'Author: ' . $added_by . '<br/>' . 'Date: ' . $date_created . '<br/>' . $content ) . '">' . __( 'Yes', 'woocommerce' ) . '</span>';
            } elseif ( isset( $content ) ) {
                // translators: %d: notes count
                echo '<span class="note-on tips" data-tip="' . wc_sanitize_tooltip( 'Author: ' . $added_by . '<br/>' . 'Date: ' . $date_created . '<br/>' . $content . '<br/><small style="display:block">' . sprintf( _n( 'Plus %d other note', 'Plus %d other notes', ( $amount_of_comments - 1 ), 'woocommerce' ), $amount_of_comments - 1 ) . '</small>' ) . '">' . __( 'Yes', 'woocommerce' ) . '</span>';
            } else {
                // translators: %d: notes count
                echo '<span class="note-on tips" data-tip="' . wc_sanitize_tooltip( sprintf( _n( '%d note', '%d notes', $amount_of_comments, 'woocommerce' ), $amount_of_comments ) ) . '">' . __( 'Yes', 'woocommerce' ) . '</span>';
            }
        }
    }
}
add_action( 'manage_shop_order_posts_custom_column' , 'custom_shop_order_list_column_content', 10, 2 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...