在WooCommerce管理订单列表中显示订单项目名称

时间:2019-09-12 作者:Most

我想在管理员列表中显示order\\u订单项目,如此屏幕截图所示:

enter image description here

正在更改/woocommerce/includes/admin/list-tables/class-wc-admin-list-table-orders.php 文件中,我尝试添加以下内容:

$product = wc_get_product( $product_id );
$ss = $product->get_name();


echo $ss
echo $product->get_name();
echo get_the_title($product_id); // this one display the order date
但它没有起作用。

2 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

Never overwrite core files! 原因有很多。请注意,订单可以有许多项目(产品)。

在订单管理列表中,以下内容将向订单状态列添加项目(产品)名称:

add_action( \'manage_shop_order_posts_custom_column\' , \'custom_orders_list_column_content\', 20, 2 );
function custom_orders_list_column_content( $column, $post_id ) {
    global $the_order, $post;

    if ( \'order_status\' === $column ) {
        $products_names = []; // Initializing

        // Loop through order items
        foreach ( $the_order->get_items() as $item ) {
            $product = $item->get_product(); // Get the WC_Product object
            $products_names[]  = $item->get_name(); // Store in an array
        }
        // Display
        echo \'<ul style="list-style: none;"><li>\' . implode(\'</li><li>\', $products_names) . \'</li></ul>\';
    }
}
代码用于函数。活动子主题(或活动主题)的php文件。测试和工作。

SO网友:Meloman

这是一个基于@loictheaztec的解决方案,其中显示了CSS样式和每个产品的数量。

product items preview in wp woo order list

将以下代码添加到function.php :

// hook for order items preview
add_action( \'manage_shop_order_posts_custom_column\' , \'custom_orders_list_column_content\', 20, 2 );
function custom_orders_list_column_content( $column, $post_id ) {
    global $the_order, $post;

    if ( \'order_status\' === $column ) {
                
        // Start list
        echo \'<ul class="orders-list-items-preview">\';
        
        // Loop through order items
        foreach ( $the_order->get_items() as $item ) {
            $product      = $item->get_product();
            $product_name = $item->get_name();
            $product_qty  = $item->get_quantity();
            echo "<li><label>$product_qty</label> $product_name</li>";
        }
        
        // End list
        echo \'</ul>\';

    }
}

// CSS for order items preview
add_action(\'admin_head\', \'orders-list-preview-css\');
function my_custom_fonts() {
  echo "<style>
    .orders-list-items-preview {
        background-color: #eee;
        padding: 8px 8px 0 5px;
        border-radius: 4px;
    }
    .orders-list-items-preview li {
        padding-left: 45px;
        position: relative;
        padding-bottom: 10px;
    }
    .orders-list-items-preview li label {
        border: 1px solid gray;
        width: 25px;
        display: block;
        text-align: center;
        border-radius: 4px;
        left: 5px;
        top: 0px;
        position: absolute;
    }
  </style>";
}

EDIT : Solution added with product image (and quantity moved on right)

enter image description here

add_action(\'manage_shop_order_posts_custom_column\', \'orders_list_preview_items\', 20, 2 );
function orders_list_preview_items($column, $post_id) {
    
    global $the_order, $post;
    
    if (\'order_status\' === $column) {
        
        // Start list
        echo \'<ul class="orders-list-items-preview">\';
        
        // Loop through order items
        foreach($the_order->get_items() as $item) {
            
            $product = $item->get_product();
            $img     = wp_get_attachment_url($product->get_image_id());
            
            $name    = $item->get_name();
            $qty     = $item->get_quantity();
            
            echo "<li>
                <img src=\\"$img\\" />
                <label>$qty</label> $name
            </li>";
        }
        
        // End list
        echo \'</ul>\';
    }
    
    
}


add_action(\'admin_head\', \'orders_list_preview_css\');
function orders_list_preview_css() {
  echo "<style>
    .orders-list-items-preview {
        background-color: #eee;
        padding: 8px 8px 0 5px;
        border-radius: 4px;
    }
    .orders-list-items-preview li {
        padding-left: 55px;
        position: relative;
        padding-bottom: 10px;
        padding-right: 40px;
        padding-top: 0;
        font-size: 10px;
        line-height: 11px;
        min-height: 30px;
    }
    .orders-list-items-preview li label {
        border: 1px solid gray;
        width: 25px;
        display: block;
        text-align: center;
        border-radius: 4px;
        right: 5px;
        top: 0px;
        position: absolute;
        font-size: 12px;
        font-weight: bold;
        padding: 5px 0;
    }
    .orders-list-items-preview img {
        margin: 1px 2px;
        position: absolute;
        left: 0;
        top: 0;
        height: 30px;
        max-height: 30px !important;
    }
  </style>";
}

相关推荐