Zastąp zawartość z kolumny „is_in_stock” na liście produktów administratora WooCommerce
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
, backorder
albo out of stock
.
Utworzyłem niestandardowy typ produktu i chcę zastąpić zawartość w kolumnie, is_in_stock
jeś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
Nie ma potrzeby usuwania domyślnej kolumny i zastępowania jej nową, możesz po prostu użyć woocommerce_admin_stock_html
filtru, w którym masz dostęp do $product
obiektu.
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 );