WooCommerce管理者製品リストの列「is_in_stock」のコンテンツを上書きします
Dec 18 2020
WooCommerce管理者製品リストの列「is_in_stock」のコンテンツを上書きしようとしています。
このために私は現在使用しています:
<?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';
}
}
}
?>
しかし、これはデフォルトのコンテンツを上書きするのではなく、これに私のテキストを追加します。デフォルトのコンテンツは、在庫状況onstock
、backorder
またはout of stock
です。
カスタム製品タイプを作成しましたが、製品タイプis_in_stock
が変数と等しい場合、列のコンテンツをオーバーライドしたいと思います。等しくない場合は、WooCommerceのデフォルトをエコーします。
列全体を削除して独自の列を追加することはできますが、producttypeが等しくない場合、デフォルトのコンテンツはありません。
誰が私を少し助けることができますか?
回答
3 7uc1f3r Dec 18 2020 at 15:19
デフォルトの列を削除して新しい列に置き換える必要はありません。オブジェクトにwoocommerce_admin_stock_html
アクセスできる場所でフィルターを使用するだけで済み$product
ます。
そうすれば、既存の列に独自のテキスト/ステータスを追加できます。
だからあなたは得る:
// 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 );