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