"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como adicionar status de estoque personalizados a produtos WooCommerce no WooCommerce 4+?

Como adicionar status de estoque personalizados a produtos WooCommerce no WooCommerce 4+?

Publicado em 2024-11-18
Navegar:533

How to Add Custom Stock Statuses to WooCommerce Products in WooCommerce 4 ?

Status de estoque personalizado para produtos WooCommerce no WooCommerce 4

Adicionar status de estoque personalizados a produtos no WooCommerce 4 é um processo relativamente simples. No entanto, é necessária a modificação de funções específicas para garantir que os status sejam exibidos corretamente no front-end e no back-end.

Adicionando status de estoque personalizado

Para adicionar status de estoque personalizado, adicione o seguinte código em seu arquivo functions.php:

function filter_woocommerce_product_stock_status_options( $status ) {
    // Add new statuses
    $status['pre_order'] = __('Pre Order', 'woocommerce');
    $status['contact_us'] = __('Contact us', 'woocommerce');

    return $status;
}
add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );

Este código adiciona dois novos status: "Pré-encomenda" e "Entre em contato conosco".

Exibindo estoque personalizado Disponibilidade

Para garantir que os status personalizados sejam exibidos corretamente no frontend, aplique as seguintes alterações:

// Availability text
function filter_woocommerce_get_availability_text( $availability, $product ) {
    // Get stock status
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $availability = __( 'Pre Order', 'woocommerce' );
            break;
        case 'contact_us':
            $availability = __( 'Contact us', 'woocommerce' );
            break;
    }

    return $availability;
}
add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );

// Availability CSS class
function filter_woocommerce_get_availability_class( $class, $product ) {
    // Get stock status
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $class = 'pre-order';
            break;
        case 'contact_us':
            $class = 'contact-us';
            break;
    }

    return $class;
}
add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 );

Exibindo o status do estoque na lista de produtos administrativos

Para exibir status de estoque personalizado na lista de produtos administrativos tabela, modifique a seguinte função:

// Admin stock html
function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
    // Simple
    if ( $product->is_type( 'simple' ) ) {
        // Get stock status
        $product_stock_status = $product->get_stock_status();
    // Variable
    } elseif ( $product->is_type( 'variable' ) ) {
        foreach( $product->get_visible_children() as $variation_id ) {
            // Get product
            $variation = wc_get_product( $variation_id );

            // Get stock status
            $product_stock_status = $variation->get_stock_status();
        }
    }

    // Stock status
    switch( $product_stock_status ) {
        case 'pre_order':
            $stock_html = '<mark class="pre-order" style="background:transparent none;color:#33ccff;font-weight:700;line-height:1;">' . __( 'Pre order', 'woocommerce' ) . '</mark>';
            break;
        case 'contact_us':
            $stock_html = '<mark class="contact-us" style="background:transparent none;color:#cc33ff;font-weight:700;line-height:1;">' . __( 'Contact us', 'woocommerce' ) . '</mark>';
            break;
    }

    return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );

Opcional: usando status de estoque personalizado em ganchos

Você pode usar status de estoque personalizado em ganchos quando você tem acesso ao objeto $product ou pode usar global $product.

Observação:

  • Use $product global quando você não tiver acesso ao objeto $product, como em woocommerce_shop_loop_item_title e woocommerce_single_product_summary hooks.
  • Acesse o objeto $product se passado por padrão para a função de retorno de chamada, como no gancho woocommerce_get_price_html.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3