Ganchos de WooCommerce y plantillas primordiales

Resuelto Dmitry Shulga asked hace 54 años • 1 respuestas

Empecé a aprender a crear plantillas con WooCommerce y me encontré con un pequeño problema. Por ejemplo, en el archivo php content-single-product.php del complemento Woocommerce tengo cadenas como esta:

     <?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        do_action( 'woocommerce_single_product_summary' );

    ?>

Y por ejemplo, cuando quiero editar esto (eliminar algunos campos y cambiar la estructura) intento borrar la cadena:

do_action('woocommerce_single_product_summary');

y después escribe así:

<?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        //do_action( 'woocommerce_single_product_summary' );
        do_action('woocommerce_template_single_title');
    ?>

¿Podría decirme por qué esto no funciona?

¿Cuál es la forma correcta de editar así?

Gracias

Dmitry Shulga avatar Jan 01 '70 08:01 Dmitry Shulga
Aceptado

Nota inicial: intente siempre utilizar los primeros ganchos disponibles; luego, si no tiene otra opción, puede anular las plantillas disponibles a través de su tema secundario.

Primero, en la referencia a continuación , encontrará cómo anular correctamente las plantillas de WooCommerce a través de un tema (evitando editar las plantillas de complementos) .

En su primer fragmento de código, como puede ver para woocommerce_single_product_summaryel gancho , tiene en orden todas las diferentes plantillas que se encuentran @hookeden esta ubicación del gancho con do_action()la función de WordPress:

do_action( 'woocommerce_single_product_summary' ); 

Entonces, en su código personalizado (el segundo fragmento de código), acaba de reemplazar el gancho por la plantilla enganchada (que NO es un gancho) y NO funcionará como un gancho de acción de punto de entrada . Consulte las referencias al final de esta respuesta para obtener la lista de acciones de WooCommerce y filtros de ganchos existentes ...

Consecuencias: Todas las demás plantillas enlazadas en el código de la lista comentada (comenzando con @hooked ) faltarán si reemplazas un gancho por un slug de plantilla .

Para conocer los ganchos utilizados en las plantillas, consulte esta útil Guía de ganchos visuales de WooCommerce.


Explicaciones (cómo) :

CÓMO - Ejemplo concreto:

Desea personalizar woocommerce_template_single_titlela plantilla enganchada en woocommerce_single_product_summaryel gancho .

 THE HOOK NAME:  woocommerce_single_product_summary hook.
   
 THE TEMPLATES HOOKED (+priority order number)  => corresponding template file name:    
— woocommerce_template_single_title       (5) => single-product/title.php
— woocommerce_template_single_rating     (10) => single-product/rating.php
— woocommerce_template_single_price      (10) => single-product/price.php
— woocommerce_template_single_excerpt    (20) => single-product/short-description.php
— woocommerce_template_single_add_to_cart(30) => single-product/add-to-cart/ (6 files depending on product type)
— woocommerce_template_single_meta       (40) => single-product/review-meta.php
— woocommerce_template_single_sharing -  (50) => single-product/share.php

Luego necesitarás editar el woocommerce_single_product_summarygancho correspondiente title.phpubicado en (subcarpeta) … Finalmente no es tan complicado, una vez que entendamos los archivos de estructura de la plantilla y los ganchos en esas plantillas.single-product

El número de prioridad , da el orden de las plantillas enganchadas: Más pequeñas al principio, más grandes al final…

Ver también: Hooks y su cola de ejecución de funciones enganchadas en Wordpress y Woocommerce


Otras formas:

También puede utilizar todos los enlaces de plantillas existentes para realizar cambios o personalizaciones muy específicos, con funciones personalizadas ubicadas en el function.phparchivo de su tema (o tema) secundario activo o también en cualquier archivo de complemento.

Ejemplo usando add_action()la función de WordPress:

// define the woocommerce_single_product_summary callback function

function my_custom_action() { 
    echo '<p>This is my custom action function</p>';
};     
add_action( 'woocommerce_single_product_summary', 'my_custom_action', 15 ); 

Esta función tiene un número de prioridad 15 y mostrará el texto de cadena "Esta es mi función de acción personalizada" , entre product pricey product short description...

Argumentos opcionales de esta función enlazada para este enlace:
• El slug de plantilla (cadena) .
• La prioridad (int) .


Referencias:

  • Estructura de plantilla y anulación de plantillas a través de un tema
  • Ganchos de WooCommerce: acciones y filtros
  • Código WooCommerce: referencia de gancho de filtro y acción
  • Guías de ganchos visuales de WooCommerce (para todas las páginas de WooCommerce)
LoicTheAztec avatar Aug 21 '2016 12:08 LoicTheAztec