Soporte » Plugins y Hacks » WooCommerce » ayuda productos

  • Resuelto matijdk

    (@matijdk)


    Hola foro, necesito algo de ayuda.

    No puedo acomodar el orden de los productos en mi web.

    Modifique el functions.php para poder lograr que los productos sin stock, aparezcan como que vulven a ingrasr pronto y quedan (tal cual yo queria) todos al final, primero estan todos en stock ultimos se acomodan los que no tienen stock.

    Hasta ahi todo perfecto, pero no puedo lograr lo que quiero que es: Que los productos se acomoden por mas actuales (los ultimos que agrego quedan ultimos) , que luego sigan los que agregue anteriormente, y luego (esto si lo logro) aparezcan los que estan sin stock.

    Dejo por las dudas lo que tengo en el functions por si hice algo ahi que sea lo que causa el problema.

    /*-----------------------------------------------------f------------------------------*/
    /* You can add custom functions below */
    /*-----------------------------------------------------------------------------------*/
    
    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
     
    function custom_override_checkout_fields( $fields ) {
      
        unset($fields['billing']['billing_address_2']);
        return $fields;
    }
    
    // Remove the sorting dropdown from Woocommerce
    
    add_filter('gettext',  'translate_text');
    add_filter('ngettext',  'translate_text');
     
    function translate_text($translated) {
         $translated = str_ireplace('Account details',  'Detalles de la cuenta',  $translated);
         return $translated;
    }
    
    function razztech_wc_terms( $terms_is_checked ) { return true;}
    add_filter( 'woocommerce_terms_is_checked', 'razztech_wc_terms', 10 );
    add_filter( 'woocommerce_terms_is_checked_default', 'razztech_wc_terms', 10 );
    
    // Remove the additional information tab
    function woo_remove_product_tabs( $tabs ) {
        unset( $tabs['additional_information'] );
        return $tabs;
    }
    add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
    
    function wc_wc20_variation_price_format( $price, $product ) {
        // Main Price
        $prices = array( $product->;get_variation_price( 'min', true ), $product->;get_variation_price( 'max', true ) );
        $price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
        // Sale Price
        $prices = array( $product->get_variation_regular_price( 'min', true ), $product->;get_variation_regular_price( 'max', true ) );
        sort( $prices );
        $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Desde: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
        if ( $price !== $saleprice ) {
            $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
        }
        
        return $price;
    }
    <strong>
    add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
    add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
    
    add_filter( 'woocommerce_get_catalog_ordering_args', 'bbloomer_first_sort_by_stock_amount', 9999 );
     
    function bbloomer_first_sort_by_stock_amount( $args ) {
       $args['orderby'] = 'meta_value';
       $args['order'] = 'ASC';
       $args['meta_key'] = '_stock_status';
       return $args;
    }</strong> 

    Esto ultimo es lo que agregue para hacer que los productos sin stock se acomoden ultimos cuando se muestran los productos.

    Espero alguien pueda ayudarme, y desde ya muchisimas gracias. Saludos.

    • Este debate fue modificado hace 2 meses, 3 semanas por Jose Luis. Razón: Etiquetar código

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Buenas @matijdk

    Prueba poniendo:

    $args['orderby'] = array( 'meta_value' => 'ASC', 'date' => 'DESC' );

    de esta manera le estás pasando primero el stock_status y luego ordene por fecha.

    Espero que te sirva para conseguir lo que quieres y recuerda volver al debate para marcarlo como resuelto o comentar tus avances.

    Salut!

    Hola, buen dia!
    Muchisimas gracias por la ayuda… te consulto, antes de tocar algo mal…

    Eso lo uso para reemplazar esto?

    function bbloomer_first_sort_by_stock_amount( $args ) {
    $args[‘orderby’] = ‘meta_value’;
    $args[‘order’] = ‘ASC’;
    $args[‘meta_key’] = ‘_stock_status’;
    return $args;
    }

    O eso solo lo agrego?

    Buenas!

    Solo tienes que reemplazar
    $args[‘orderby’] = ‘meta_value’;
    por
    $args['orderby'] = array( 'meta_value' => 'ASC', 'date' => 'DESC' );
    y eliminar
    $args[‘order’] = ‘ASC’;

    Salut!

    SIiiiii!!! ahi anda tal cual queriaaaa!!!
    Un millon de gracias, me re ayudaste!!!
    Te hago una consultita mas asi no abro otro hilo…
    Sabes como pongo para que me muestre mas de 12 productos por pagina
    como sale desde siempre?
    Gracias, muchas!!!

    Eso debes modificarlo en
    Ajustes > lectura

    Creo que allí puedes modificar el numero de posts por página.
    Recuerda marcar el debate como resuelto y en caso de que sigas teniendo dudas abre otro hilo.

    Salut!

    Dale, cualquier cosa abro un hilo a partte.
    Muchisimas gracias, resolviste mi problema.
    Saludos!

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.