Soporte » Plugins y Hacks » WooCommerce » Productos relacionados antes de describir productos

  • Hola!
    Estoy intentando hacer lo siguiente, necesitaría mostrar los productos relacionados antes de la descripción del producto.

    He intentado hacer lo siguiente:

    function orden_producto(){
      // Funcion que altera el orden de la plantilla 'single_product'
      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_meta', 40 );
    
      add_action("woocommerce_single_product_summary","woocommerce_template_single_excerpt",10);
      add_action("woocommerce_single_product_summary","woocommerce_template_single_price",20);
    
      remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
      add_action('woocommerce_before_single_product_summary', 'woocommerce_output_related_products', 9);
    
    }

    Pero no consigo que nunca me los ponga previo al contenido, siempre me lo está mostrando abajo, como si no afectase ese orden que le establezco.

    Mi single-product es el siguiente:

    section class="franja-breadcrumb">
        <article class="contenedor">        
            <?php do_action( 'woocommerce_before_main_content' ); ?>
        </article>
    </section>
    
    <section class="contenedor">
        <?php
            while(have_posts()):
                the_post();
                wc_get_template_part( 'content', 'single-product' );
            endwhile;
        ?>
    </section>
    <section class="contenedor">
    <?php 
       do_action("woocommerce_after_single_product_summary");
    ?>
    </section>

    ¿Dónde estoy metiendo la pata?

    • Este debate fue modificado hace 1 semana, 4 días por madman_18.
    • Este debate fue modificado hace 1 semana, 4 días por madman_18.
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Moderador Jose Luis

    (@jose64)

    Hola.

    Solo tienes que quitar los relacionados de un sitio y ponerlos en otro, no tienes por que tocar más elementos ni indicar plantilla.

    Yo acabo de probarlo con este código y me funciona perfectamente:

    remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
    add_action('woocommerce_before_single_product_summary', 'woocommerce_output_related_products');
    add_action('woocommerce_single_product_summary', 'woocommerce_output_related_products');

    Quitas los productos relacionados de la posición inicial y los vuelves a ubicar con el gancho correspondiente a la posición que te interese, en este caso antes de todo el contenido y después del título. Te dejo el enlace a una guía visual para que veas dónde están los ganchos que puedes utilizar:

    WooCommerce Single Product Page [Visual Hook Guide]

    Añade el código correspondiente en el archivo functions.php de tu tema hijo o en un plugin de personalizaciones.

    Recuerda cerrar el debate marcándolo como resuelto cuando así lo consideres, de esta forma nos ayudas a mantener el foro al día.

    Iniciador del debate madman_18

    (@madman_18)

    Hola @jose64 pues…he probado las líneas que me comentas y nada, se quedan situados justo debajo de la ficha del producto.

    He probado a quitarlos de esa función y a comentar la misma también por si acaso y nada.

    Los he puesto, vaciado la caché y no consigo que se sitúen ahí.

    ¿Qué puede ocurrir?

    Moderador Jose Luis

    (@jose64)

    Cambia el tema que tengas instalado por uno de los twenty, por ejemplo el Twenty Twenty-One y verifica si te funciona, si te funciona tendrás que verificar el archivo content-sigle-product.php en tu tema, seguramente estará modificado. Su contenido original (en el plugin) es a partir de la línea 64:

    <?php
    	/**
    	 * Hook: woocommerce_after_single_product_summary.
    	 *
    	 * @hooked woocommerce_output_product_data_tabs - 10
    	 * @hooked woocommerce_upsell_display - 15
    	 * @hooked woocommerce_output_related_products - 20
    	 */
    	do_action( 'woocommerce_after_single_product_summary' );
    	?>
    

    Si tu tema modificó los valores tienes que tomar lo que tenga asignados

    Iniciador del debate madman_18

    (@madman_18)

    Hola @jose64 pues lo he probado e incluido en el function de ese theme (para validar) el código que me comentabas antes

    remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
    add_action('woocommerce_before_single_product_summary', 'woocommerce_output_related_products');
    add_action('woocommerce_single_product_summary', 'woocommerce_output_related_products');

    Pero sigue sin aplicar ese orden que intento cambiarle con el function, veo la ficha de producto con el theme «TwentyTwentyone» y siempre se lo pone abajo, no entiendo por qué.

    Moderador Jose Luis

    (@jose64)

    ¿Dónde añadiste el código?, si lo añadiste en el archivo functions.php del tema al cambiar de tema no se ejecuta, tienes que añadirlo al archivo functions.php del nuevo tema. A todas estas, ¿qué tema estás usando?, yo he hecho las pruebas con el Twenty Twentyone y elimina el de la posición predefinida (abajo) y lo muestra en dos posiciones, en la parte superior de la página y debajo del nombre del producto.

    Iniciador del debate madman_18

    (@madman_18)

    Hola @jose64 !
    Pues después de varias pruebas por fin me ha andado! No sé si sería el producto o qué, pero si modifica el tema de los productos relacionados.

    Lo que no entiendo es…por qué lo hace sacándome los productos de la misma categoría y no me saca los que meto en (dentro de la ficha del producto) Productos Relacionados > Ventas Dirigidas que sería los que necesitaría mostrar y poner arriba de esa ficha en concreto.

    ¿Puede que sea con otro tipo de hook? He probado en el tema tanto mío como en el Twenty Twentyone y se sitúa siempre abajo.

    Moderador Jose Luis

    (@jose64)

    Hola.

    Para mantener el orden y que los debates de los foros sean de utilidad para otros usuarios con problemas similares solo se puede hacer una consulta por cada uno. Esto último es otra consulta diferente, por favor, marca este debate como resuelto y abre uno nuevo con su correspondiente título, con mucho trataremos de resolverlo.

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