Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Un shortcode no se ejecuta donde quiero

Estas en el tema de Un shortcode no se ejecuta donde quiero en el foro de WordPress en Foros del Web. Hola a todos. Después de mucho pelear con esto de los shortcodes y lograr ejecutar uno en un producto en una tienda en wordpress con ...
  #1 (permalink)  
Antiguo 06/11/2015, 11:48
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 9 meses
Puntos: 2
Un shortcode no se ejecuta donde quiero

Hola a todos.

Después de mucho pelear con esto de los shortcodes y lograr ejecutar uno en un producto en una tienda en wordpress con woocommerce, me surge el siguiente problema. Ponga donde ponga la llamda al shortcode en la descripción del producto, el resultado del mismo aparece en el mismo lugar. Podéis ver donde me aparece en este producto, es un texto que dice "TExto de prueba" enmarcado en rojo, para que lo localicéis rápido.:

Pedal Boss RC-1

Como digo, da igual dónde coloque la llamada al shortcode dentro de la descripción de este producto, siempre me aparece ahí, pero me gustaría que apareciera en otro lugar dentro de la descripción del producto.

¿Qué puede estar fallando o qué estoy haciendo mal?

Gracias desde ya mismo
  #2 (permalink)  
Antiguo 06/11/2015, 14:17
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 9 meses
Puntos: 1146
Respuesta: Un shortcode no se ejecuta donde quiero

Me parece mas un error en tu codigo html y css que del shortcode, pero si nos dejas ver el codigo que implementas en la funcion del shortcode quizas veamos algo mas.


Nota: si estas usando la funcion ECHO para imprimir el contenido siempre te dara problemas al posisionarlo.... debes usar return $contenido;
  #3 (permalink)  
Antiguo 08/11/2015, 23:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: Un shortcode no se ejecuta donde quiero

Gracias ArturoGallegos por tu respuesta.

Efectivamente, el error me venía por estar usando ECHO en lugar de return, lo he cambiado y ya funciona, pero esto era sólo un ejemplo. Cuento lo que realmente quiero conseguir.

Como las descripciones de los artículos de la tienda son, en algunos casos bastantes amplias, lo que quiero es que el formulario para añadir al carrito me aparezca en varios puntos de la descripción del artículo, o al menos, al final de la misma. Para eso me creo el shortcode en el que ejecuto un hook. Pues bien, al hacer esto, la ejecución del shortcode me vuelve a salir al comienzo de la descripción del artículo.
El código para el shortcode es el siguiente:

-----------------------------------------------------------
function shortcode_anadirAlCarro($atts){

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_excerpt', 20 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );


do_action( 'woocommerce_single_product_summary' );


}
add_shortcode('mostrarIncorporarAlCarro', 'shortcode_anadirAlCarro');

-------------------------------------------------------------------

En la descripción del producto tengo puesto lo siguiente:

<div class="summary entry-summary" style="border:solid 2px #f00;">[mostrarIncorporarAlCarro]</div>

Como veréis en el Pedal boss RC-1, el formulario me aparece justo debajo del texto "Descripción del producto", y el lugar donde yo quiero que me aparezca es en el lugar donde está la linea roja que aparece al final de la descripción del producto. Mi objetivo es dejar ese formulario en lugar del botón de "comprar en amazon.es".

¿Qué tengo que hacer ahora o cómo lo tengo que hacer?

Gracias.

Etiquetas: ejecuta, quiero, shortcode, woocommerce
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:38.