У меня есть вопрос относительно woocommerce и самого wordpress. Вероятно, моя проблема фиктивна, но текущий код не работает.

Я хотел отобразить данные моего настраиваемого поля на подстранице заказов woocommerce. У моего настраиваемого поля post_meta есть имя (метакей): wccpf_authorvalue

В Google я нашел код и просто изменил мета-имя моего сообщения на это:

   add_filter( 'manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION' );
function MY_COLUMNS_FUNCTION($columns){
    $new_columns = (is_array($columns)) ? $columns : array();
    unset( $new_columns['order_actions'] );

    //edit this for you column(s)
    //all of your columns will be added before the actions column
    $new_columns['for-author-value'] = 'Dla autora';
    //stop editing

    $new_columns['order_actions'] = $columns['order_actions'];
    return $new_columns;
}


add_action( 'manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2 );
function MY_COLUMNS_VALUES_FUNCTION($column){
    global $post;
    $data = get_post_meta( $post->ID );

    //start editing, I was saving my fields for the orders as custom post meta
    //if you did the same, follow this code
    if ( $column == 'for-author-value' ) {    
        echo (isset($data['wccpf_authorvalue']) ? $data['wccpf_authorvalue'] : '');
    }

}


add_filter( "manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION' );
function MY_COLUMNS_SORT_FUNCTION( $columns ) {
    $custom = array(
        //start editing

        'for-author-value'    => 'wccpf_authorvalue'

        //stop editing
    );
    return wp_parse_args( $custom, $columns );
}

Столбец «Проблема» отображается, но без значения. Почему это?

Я использовал решение отсюда: Stackoverflow.com, но оно не работает.

2
Paweł Skaba 26 Дек 2015 в 13:06

3 ответа

Лучший ответ

На самом деле я понял, как решить свою проблему. Спасибо за вашу поддержку в этом вопросе. Если кому-то в будущем понадобится помощь, я поделюсь своим кодом ниже (важно, я решил добавить 2 столбца)

 add_filter( 'manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 10 );
function MY_COLUMNS_FUNCTION( $columns ) {
    $new_columns = ( is_array( $columns ) ) ? $columns : array();
    unset( $new_columns['order_actions'] );
    //edit this for you column(s)
    //all of your columns will be added before the actions column
    $new_columns['product_name'] = 'Product';
    $new_columns['authors_income'] = 'Author';

    $new_columns['order_actions'] = $columns['order_actions'];

    return $new_columns;
}

add_action( 'manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2 );
function MY_COLUMNS_VALUES_FUNCTION( $column ) {
    global $post;
    $order = new WC_Order( $post->ID );
    $items = $order->get_items();

    //start editing, I was saving my fields for the orders as custom post meta
    //if you did the same, follow this code
    if ( $column == 'authors_income' ) {
        foreach ( $items as $item ) {

            echo $item['your field meta key'];
            echo '.00USD';

        }
    }

    if ( $column == 'product_name' ) {
        foreach ( $items as $item ) {

            echo $item['your field meta key'];

        }
    }

}


add_filter( "manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION' );
function MY_COLUMNS_SORT_FUNCTION( $columns ) {
    $custom = array(
        //start editing

        'authors_income'    => 'your field meta key',
        'product_name'    => 'your field meta key'

        //stop editing
    );
    return wp_parse_args( $custom, $columns );
}
-1
Paweł Skaba 29 Дек 2015 в 11:40

Итак, что вы можете сделать, так это сделать так, чтобы там отображался диапазон. как следующее

<span id="metawrap"></span>

И вы можете обновить значение, используя jQuery и Ajax, чтобы вызвать действие Wordpress для получения метаданных.

Вставьте следующий код в ссылку pastebin в functions.php вашей темы http://pastebin.com/LA4zB4TF

В js-файле вашей темы внутри функции document.ready добавьте следующую функцию jQuery в ссылке pastebin

http://pastebin.com/RTYX1Bik

Надеюсь, что это работает для вас.

0
Pradeep Sambandam 28 Дек 2015 в 14:23

Добавьте приоритет фильтру, чтобы он работал так, как вы хотите. Также добавьте этот код в файл functions.php.

add_filter('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 11);    

function MY_COLUMNS_FUNCTION($columns) {

}
2
Alexander Mikhalchenko 28 Дек 2015 в 12:31