Ghi đè nội dung từ cột “is_in_stock” trong danh sách sản phẩm quản trị WooCommerce

Dec 18 2020

Tôi cố gắng ghi đè nội dung từ cột "is_in_stock" trong danh sách sản phẩm quản trị WooCommerce.

Đối với điều này tôi hiện đang sử dụng:

<?php
add_action('manage_product_posts_custom_column', 'stock_override' );
 
function stock_override($column_name){ global $post;
    $product = wc_get_product($post->ID);
    if( $product->is_type('variable')){ if ($column_name == 'is_in_stock') {
            echo 'own text';
        }
    }
}
?>

Nhưng điều này không ghi đè nội dung mặc định mà thêm văn bản của tôi vào nội dung này. Nội dung mặc định là trạng thái còn hàng onstock, backorderhoặc out of stock.

Tôi đã tạo một loại sản phẩm tùy chỉnh và tôi muốn ghi đè nội dung trong cột is_in_stocknếu loại sản phẩm bằng biến. Nếu không bằng nhau, hãy lặp lại mặc định từ WooCommerce.

Tôi có thể xóa toàn bộ cột và thêm cột của riêng mình nhưng sau đó tôi không có nội dung mặc định nếu loại sản phẩm không bằng nhau.

Ai có thể giúp tôi một chút?

Trả lời

3 7uc1f3r Dec 18 2020 at 15:19

Không cần phải xóa cột mặc định và thay thế bằng cột mới, bạn chỉ có thể sử dụng woocommerce_admin_stock_htmlbộ lọc mà bạn có quyền truy cập vào $productđối tượng.

Bằng cách đó, bạn có thể thêm văn bản / trạng thái của riêng mình vào cột hiện có.

Vì vậy, bạn nhận được:

// Admin product list: is_in_stock
function filter_woocommerce_admin_stock_html( $stock_html, $product ) { // Condition if ( $product->is_type('variable') ) {
        $stock_html = '<mark class="someclass" style="background:transparent none; color:#33ccff; font-weight:700; line-height:1;">' . __( 'My text', 'woocommerce' ) . '</mark>'; } return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );