Cómo usar descripciones cortas diferentes en la página de tienda y en la página de producto en WooCommerce
Lo que me gustaría es tener la frase "Entre em contacto connosco para saber preços Aqui" solo en la página de producto, no en la página de tienda. Por favor, mira esta página: http://www.kepaweleurope.com/shop/soutien-mamoplastia-85/
¿Alguien puede ayudarme?
Gracias de antemano, Miguel

La plantilla de descripción corta es /templates/single-product/short-description.php:
<?php
/**
* Descripción corta del producto individual
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Salir si se accede directamente
global $post;
if ( ! $post->post_excerpt ) return;
?>
<div itemprop="description">
<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>
</div>
Puedes sobrescribir esta plantilla (o cualquier plantilla de WooCommerce): http://docs.woothemes.com/document/template-structure/ copiando el archivo en tu tema... como woocommerce/single-product/short-description.php
. Luego puedes editarlo como prefieras.
EDITAR: Si entiendo tu pregunta, harías esto:
<?php
/**
* Descripción corta del producto individual
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Salir si se accede directamente
global $post;
?>
<div itemprop="description">
Contáctenos para conocer los precios aquí
</div>
O podrías filtrar woocommerce_short_description
. O podrías definir tu propia función woocommerce_template_single_excerpt()
que es enchufable, o eliminarla completamente de su hook. Realmente hay muchas formas de hacer esto, pero la sobrescritura de plantillas suele ser la más sencilla de entender.
EDITAR: Aquí hay un ejemplo muy básico de cómo filtrar la descripción corta (y en general filtrar cualquier cosa sigue siempre el mismo proceso)
Editar nuevamente: esto va en el functions.php de tu tema
function wpa_98244_filter_short_description( $desc ){
global $product;
if ( is_single( $product->id ) )
$desc .= ' añade algún texto extra a la descripción corta';
return $desc;
}
add_filter( 'woocommerce_short_description', 'wpa_98244_filter_short_description' );

Hola Helga, gracias por tu ayuda. Déjame ver si entiendo. La forma más simple es hacer un override. Lo hice, y ahora creo que tengo que editar el archivo. La pregunta es ¿qué necesito hacer para obtener lo que quiero? ¿Puedes darme algo más? Gracias de antemano, Miguel

Hola Helga. Vuelvo a este tema, porque estuve en otro proyecto. Gracias por tu apoyo hasta ahora. Lo que necesito es tener la descripción corta como el tema normal de woocommerce (me gustaría no tener el "Entre em contacto connosco para saber preços Aqui"). En la página del producto me gustaría tener la descripción corta normal más "Entre em contacto connosco para saber preços Aqui" en lugar de los precios que ya he eliminado. No sé si me he explicado lo suficientemente claro... Gracias de antemano. Miguel

Así que solo copia la plantilla original y añádele "Entre em contacto". ¿Qué es lo que no funciona para ti en mi solución?

No, no funciona para mí porque si la uso no tengo la descripción corta en la página del producto y tengo "Entre em contacto" en la página de la tienda. Necesito la descripción corta en ambas páginas y "Entre em contacto" solo en la página del producto. No sé si me explico... Gracias de antemano.

Creo que necesitas editar tu pregunta o tal vez incluso hacer una nueva (diferente). He respondido a la pregunta tal como se formuló originalmente. Para tu información, la descripción corta se muestra por defecto en la página del producto, a menos que tu tema la haya modificado.

He editado mi respuesta nuevamente para mostrar cómo filtrar la descripción en lugar de editar plantillas.

Helga, por favor dime dónde coloco el filtro dentro de la descripción corta. Gracias de antemano.

Querida Helga, edité el archivo e hice el siguiente cambio, pero no está funcionando:<?php /* * Descripción corta del producto individual /
if ( ! defined( 'ABSPATH' ) ) exit; // Salir si se accede directamente global $post; if ( ! $post->post_excerpt ) return; ?> <div itemprop="description"> function wpa_98244_filter_short_description( $desc ){ global $product; if ( is_single( $product->id ) ) $desc .= ' añade un texto adicional a la descripción corta'; return $desc; } add_filter( 'woocommerce_short_description', 'wpa_98244_filter_short_description' ); </div>

También puedes usar esto con la base de datos de WordPress para la página de producto. En este código, puedes poner tu propia descripción corta. También he usado una condición. Puedes cambiarla según tus necesidades. Este código necesitas colocarlo en el archivo function.php de tu tema.
function My_short_description(){
global $post,$wpdb,$woocommerce;
$your_short_description = "Mi Descripción";
$id = get_the_id();
$prefix = $wpdb->prefix;
$query = $wpdb->get_row("SELECT post_excerpt FROM {$prefix}posts WHERE ID={$id}");
if($query)
{
$woocommerce_page_short_description = $query->post_excerpt;
if($woocommerce_page_short_description=="" && $woocommerce_page_short_description==null)
{
echo $your_short_description;
}
}
}
add_action( 'woocommerce_before_add_to_cart_form', 'My_short_description', 40 );
