Zastąp zawartość z kolumny „is_in_stock” na liście produktów administratora WooCommerce

Dec 18 2020

Próbuję nadpisać zawartość z kolumny „is_in_stock” na liście produktów administratora WooCommerce.

Do tego obecnie używam:

<?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';
        }
    }
}
?>

Ale to nie zastępuje domyślnej zawartości, ale dodaje do tego mój tekst. Zawartość domyślnym jest stan stada onstock, backorderalbo out of stock.

Utworzyłem niestandardowy typ produktu i chcę zastąpić zawartość w kolumnie, is_in_stockjeśli typ produktu jest równy zmiennej. Jeśli nie jest równe, powtórz ustawienie domyślne z WooCommerce.

Mogę usunąć całą kolumnę i dodać własną kolumnę, ale wtedy nie mam domyślnej zawartości, jeśli typ produktu nie jest równy.

Kto może mi trochę pomóc?

Odpowiedzi

3 7uc1f3r Dec 18 2020 at 15:19

Nie ma potrzeby usuwania domyślnej kolumny i zastępowania jej nową, możesz po prostu użyć woocommerce_admin_stock_htmlfiltru, w którym masz dostęp do $productobiektu.

W ten sposób możesz dodać własny tekst / statusy do istniejącej kolumny.

Więc dostajesz:

// 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 );