Ganchos de WooCommerce y plantillas primordiales
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
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_summary
el gancho , tiene en orden todas las diferentes plantillas que se encuentran @hooked
en 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_title
la plantilla enganchada en woocommerce_single_product_summary
el 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_summary
gancho correspondiente title.php
ubicado 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.php
archivo 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 price
y 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)