2016-09-26 4 views
3

В WooCommerce у меня есть 2 пользовательских статуса заказа. Первый - «статус доставки», а другой - «одобренный статус».Неверный формат персонализированного заказа: Неверный платеж не возвращается Калькулятор кредита:

После того, как я изменил статус некоторых заказов на эти два новых статуса (которые являются shipping или approved), клиент не может просматривать эти заказы на своей странице истории заказов.

Вот мой код:

function register_awaiting_shipment_order_status() { 


    if('product_manager' == $get_roles || 'administrator' == $get_roles){ 
     register_post_status('wc-shipping', array(
       'label'      => 'wc-shipping', 
       'public'     => true, 
       'exclude_from_search'  => false, 
       'show_in_admin_all_list' => true, 
       'show_in_admin_status_list' => true, 
       'label_count'    => _n_noop('Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>') 
     )); 
    } 


    if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles){ 
     register_post_status('wc-approved', array(
       'label'      => 'wc-approved', 
       'public'     => true, 
       'exclude_from_search'  => false, 
       'show_in_admin_all_list' => true, 
       'show_in_admin_status_list' => true, 
       'label_count'    => _n_noop('Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>') 
     )); 
    } 
} 

    add_action('init', 'register_awaiting_shipment_order_status'); 

Но если изменить статус заказа обратно статусов заказа в Woocommerce's по умолчанию (например, «завершено»), то клиент может просматривать их я его историю заказа снова.

Что я делаю неправильно?
Как я могу отображать новые заказы с этими новыми настраиваемыми статусами на странице истории заказов клиентов?

Спасибо.

ответ

2

Я исправил небольшие ошибки в вашем коде. Вам нужно будет заменить textdomain всюду по теме text domain (или slug).

Для завершения и отображения этого новый статус пользовательских заказов, вам необходимо также зарегистрировать их в wc_order_statuses фильтра крюком, который используется на my_account/orders.php шаблон, который отображает заказы клиентов на их страницах аккаунта.

Это вновь код:

function register_new_custom_order_statuses() { 

    if('product_manager' == $get_roles || 'administrator' == $get_roles){ 
     register_post_status('wc-shipping', array(
      'label'      => _x('Shipping', 'Order status', 'textdomain'), 
      'public'     => true, 
      'exclude_from_search'  => false, 
      'show_in_admin_all_list' => true, 
      'show_in_admin_status_list' => true, 
      'label_count'    => _n_noop('Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>') 
     )); 
    } 

    if('approver' == $get_roles || 'administrator' == $get_roles ||'product_manager' == $get_roles){ 
     register_post_status('wc-approved', array(
      'label'      => _x('Approved', 'Order status', 'textdomain'), 
      'public'     => true, 
      'exclude_from_search'  => false, 
      'show_in_admin_all_list' => true, 
      'show_in_admin_status_list' => true, 
      'label_count'    => _n_noop('Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>') 
     )); 
    } 
} 
add_action('init', 'register_new_custom_order_statuses'); 

// Register new statuses in wc_order_statuses (function). 
function register_new_custom_wc_order_statuses($order_statuses) { 
    $order_statuses['wc-shipping'] = _x('Shipping', 'Order status', 'textdomain'); 
    $order_statuses['wc-approved'] = _x('Approved', 'Order status', 'textdomain'); 
    return $order_statuses; 
} 
add_filter('wc_order_statuses', 'register_new_custom_wc_order_statuses'); 

Этот код идет в function.php файле Вашего активного ребенка темы (или темы), или же в любом файле плагина.

Код проверен и полностью работоспособен.


Ссылки:

+0

Извините за чего это назад, у меня есть в общей сложности 3 предметов в 'туалет-доставка' статус, я могу видеть фильтруйте этот статус над списком заказов, но когда я выбираю «Все (10)» в качестве фильтра, на странице заказа администратора перечислены только 7 иены. Есть ли способ исправить это? –

+0

@BrunoRodrigues У меня нет ответа, например ... Вам придется искать и попробовать немного самостоятельно или задать новый вопрос в StackOverFlow. – LoicTheAztec

+1

Это была ошибка одного из наших кодеров, который изменил префикс от «wc-» до «qc». Это заставило заказ остаться скрытым в моем списке. Спасибо за ваше время! –

Смежные вопросы