Soporte » Plugins y Hacks » WooCommerce » Cambiar de posicion los elementos del producto

  • Buen dia, estoy tratando de cambiar de orden de los elementos en el producto y en la pagina de inicio.
    Lo trate de realizar cambiando los hooked pero no me deja.

    Estoy tratando de conseguir este orden
    Nombre del producto
    Categoria
    Ref/SKU
    Medidas
    Desc cort precio
    Sumador añadir al carrito

    para agregar dimensiones he utilizado este codigo

    add_action( ‘woocommerce_after_shop_loop_item’, ‘rs_show_dimensions’, 12 );
    
    function rs_show_dimensions() {
    global $product;
    $dimensions = wc_format_dimensions($product->get_dimensions(false));
    
    if ( $product->has_dimensions() ) {
    echo ‘<div class=»product-meta»><span class=»product-meta-label»>Dimensiones: </span>’ . $dimensions . ‘</div>’;
    }
    }

    y para agregar el sku al producto de la tienda, donde lo he cambiado por REF he utilizado esto

    add_action( ‘woocommerce_after_shop_loop_item’, ‘prima_custom_shop_item’, 15);
    function prima_custom_shop_item() {
    global $post, $product;
    
    /* product sku */
    echo ‘<p>Ref: ‘.$product->get_sku().'</p>’;
    }
    • Este debate fue modificado hace 3 años, 1 mes por Fernando Tellado. Razón: Etiquetado correcto del código

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

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador kallookoo

    (@kallookoo)

    Hola @keywordsmkt

    Para personalizar el orden deberas cambiar el orden de los action para que se ejecuten en el orden que quieras en las plantillas necesarias.

    Aqui tienes los predeterminados; https://github.com/woocommerce/woocommerce/blob/master/includes/wc-template-hooks.php#L81 para el loop.

    Si tu theme lo modifica deberas buscar donde estan, sea como sea, primero eliminas los actions y luego los añades. Ojo eliminarlos me refiero ha usar remove_action.
    Piensa que para la pagina de producto se usan otros; https://github.com/woocommerce/woocommerce/blob/master/includes/wc-template-hooks.php#L135

    Por ejemplo:
    Si tuvieses este orden

    
    add_action( 'woocommerce_single_product_summary', 'c', 5 );
    add_action( 'woocommerce_single_product_summary', 'a', 5 );
    add_action( 'woocommerce_single_product_summary', 'b', 5 );
    

    Tendrias que hacer lo siguiente usando el functions.php o tu plugin de funciones.

    
    /** Se eliminan */
    remove_action( 'woocommerce_single_product_summary', 'c', 5 );
    remove_action( 'woocommerce_single_product_summary', 'a', 5 );
    remove_action( 'woocommerce_single_product_summary', 'b', 5 );
    
    /** Se añaden */
    add_action( 'woocommerce_single_product_summary', 'a', 5 );
    add_action( 'woocommerce_single_product_summary', 'b', 5 );
    add_action( 'woocommerce_single_product_summary', 'c', 5 );
    

    Si te fijas a,b,c que serian las funciones se añaden en el orden que se desea, si quieres tambien podrias modificar la prioridad de menor a mayor que tenga cada action pero es mas facil de ver si lo hacer como en el ejemplo.

    Saludos

    Iniciador del debate keywordsmkt

    (@keywordsmkt)

    Gracias por toda tu informacion, pero la verdad que soy muy nuevo en esto de los codigos.

    he podido crear este codigo pero no realiza ningun cambio para lograr el cometido.

    /* orden de los datos de productos*/
    /**
     * Show product dimensions on archive pages for WC 3+
     */
    add_action( 'woocommerce_after_shop_loop_item', 'rs_show_dimensions', 25 );
    
    function rs_show_dimensions() {
        global $product;
        $dimensions = wc_format_dimensions($product->get_dimensions(false));
    
            if ( $product->has_dimensions() ) {
                    echo '<div class="product-meta"><span class="product-meta-label">Dimensiones: </span>' . $dimensions . '</div>';
            }
    }
    
    /**
     * Show product weight on archive pages
     */
    add_action( 'woocommerce_after_shop_loop_item', 'rs_show_weights', 9 );
    
    function rs_show_weights() {
    
        global $product;
        $weight = $product->get_weight();
    
        if ( $product->has_weight() ) {
            echo '<div class="product-meta"><span class="product-meta-label">Peso: </span>' . $weight . get_option('woocommerce_weight_unit') . '</div></br>';
        }
    }
    
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 80 );
    
    /*cambio de nombre de añadir al carrtio */
    
    add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );    // 2.1 +
     
    function woo_archive_custom_cart_button_text() {
     
            return __( 'Añadir', 'woocommerce' );
     
    }
    
    /**Posicion de info en Tienda**/
    /** Se eliminan */
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
    remove_action( 'woocommerce_after_shop_loop_item', 'prima_custom_shop_item', 15);
    remove_action( 'woocommerce_after_shop_loop_item', 'rs_show_dimensions', 25 );
    remove_action( 'woocommerce_after_shop_loop_item', 'rs_show_weights', 9 );
    
    remove_filter('woocommerce_after_shop_loop_item', 'qib_replace_template',);
    
    /** Se añaden */
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
    add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_category_title', 10 );
    add_action( 'woocommerce_after_shop_loop_item', 'prima_custom_shop_item', 15);
    add_action( 'woocommerce_after_shop_loop_item', 'rs_show_dimensions', 15 );
    add_action( 'woocommerce_after_shop_loop_item', 'rs_show_weights', 19 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 20 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 'woocommerce_template_single_price', 30 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 50 );
    add_filter('woocommerce_after_shop_loop_item', 'qib_replace_template', 40);
    • Esta respuesta fue modificada hace 3 años por jose64. Razón: Etiquetar código
    Moderador kallookoo

    (@kallookoo)

    Hola @keywordsmkt

    Una cosa acuerdate de usar la etiquete CODE para el codigo ya que es mas facil leerlo. 😉

    Sobre lo que comentas, y si lo tienes en el functions.php de tu theme, prueba añadiendolo todo dentro de:

    
    function keywordsmkt_woocommerce_init() {
     /** Añades todos los ganchos aqui, ya sea para eliminar o añadir. */
    }
    add_action( 'woocommerce_init', 'keywordsmkt_woocommerce_init' );
    

    Ese action se ejecuta despues de todo el plugin se inicie.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Cambiar de posicion los elementos del producto’ está cerrado a nuevas respuestas.