Проверьте и отобразите все позиции заказа, которые имеют SKU в Woocommerce - PullRequest
0 голосов
/ 30 ноября 2018

возникла проблема с пользовательским скриптом для отображения SKU на экране Woocommerce> Admin> Orders.Кажется, я не могу показать sku

Попытка

        switch ( $column )
    {
  case 'my_custom_column' :
  $the_sku = get_post_meta( $post_id, '_sku' )

, а затем я использую что-то подобное, чтобы отобразить сообщение об ошибке (для себя), если элемент не имеетSKU.

if(!empty($the_sku)) {
     echo "<a href=''><div class='order_div'>SKU is".$the_sku."</div></a>";
} else {
    echo "<a href=''><div class='order_div'>NO SKU</div></a>";
}

Но, похоже, это не работает.Это даже не перекликается с SKU (когда оно существует).Так что я немного застрял.В идеале я пытаюсь проверить, есть ли у каждого элемента в заказе (к заказу может быть несколько элементов) каждый из них имеет свой SKU.

Если SKU отсутствуют, в столбце «Заказы» отображается ошибка.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 30 ноября 2018

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

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

switch ( $column ) {
    case 'my_custom_column' :

        // Get the WC_Order instance object
        $order = wc_get_order( $post_id );
        $has_sku = false;
        $skus = [];
        $missing = 0;

        // Loop through order items
        foreach( $order->get_items() as $item ){
            // Get the WC_Product object (from order item)
            $product = $item->get_product();

            if( $sku = $product->get_sku() ) {
                $has_sku = true;
                $skus[] = $sku;
            } else {
                $missing++;
            }
        }

Затем:

echo '<a href=""><div class="order_div">';

if ( $has_sku ) {
    echo __( "SKUs: %s") . ' ' . implode( ', ', $skus );
} else {
    echo __( "NO SKU" );
}

// Display missing SKUs count (optionally)
if( $missing > 0 ){
    echo ' <em>(' . $missing . ' missing)</em>';
}

echo '</div></a>';

Это должно сработать сейчас.

...