Skip Navigation

[Resolved] Necesito poner un shortcode dentro de otro

This support ticket is created 7 years, 2 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+00:00)

Tagged: 

This topic contains 4 replies, has 2 voices.

Last updated by Rafael Corts 7 years, 2 months ago.

Assisted by: Nigel.

Author
Posts
#563646

Hola he creado este código:

[wpv-view name="productes-de-cada-vendor" wpvwcpvproductvendors="[wpv-view name="slug-centre"]"]</div>

Lo he creado en una página para poder filtrar una "View" con un filtro de shortcode

 wpvwcpvproductvendors="[wpv-view name="slug-centre"]

El problema creo que es que no no funciona un shortcode dentro de otro shortcode, ¿como podria hacer para que me funcionara?
Si lo pongo por separado esta View lo hace correcto

<div class="rc_products">[wpv-view name="slug-centre"]</div>

pero cuando lo pongo dentro de del otro codigo no me funciona.
¿Como lo podría hacer?
Saludos.
Rafa corts

#564126

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hola Rafa

El problema es que la salida de un View no es 'limpio', contiene un div contenedor, p.j.

Tienes que añadir algún código a functions.php a limpiar el View, así:

/**
 * Naked Views output with no wrapper divs
 */
add_filter( 'wpv_filter_wpv_view_shortcode_output', 'prefix_naked_view_output', 5, 2 );
function prefix_naked_view_output( $out, $view_id ) {
 
    if ( 99 = $view_id ) { // Editar el ID como sea necesario
        $start = strpos( $out, '<!-- wpv-loop-start -->' );
        if  (   $start !== false
                && 
                strrpos( $out, '<!-- wpv-loop-end -->', $start ) !== false ) {
 
            $start = $start + strlen( '<!-- wpv-loop-start -->' );
            $out = substr( $out , $start );
            $end = strrpos( $out, '<!-- wpv-loop-end -->' );
            $out = substr( $out, 0, $end );
        }
    }
 
    return $out;
}

Así con una salida limpia se puede usar el View como entrada para otros usos.

#564829

Hola Nigel, entiendo que esta funcction es para limpiar el div contenedor, he pegado esta functions en la pagina de functions.php y cuando lo salvo las paginas se quedan en blanco. no se si debo indicar que view o shortcode ?
Saludos.
Rafa corts

#565010

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hola Rafa

Tienes que editar linea 7 para el ID del View (99 en este ejemplo), y veo un error tipográfico.

Debe ser:

if ( 99 == $view_id ) { // Editar el ID como sea necesario
#565066

Todo perfecto!!
Mil Gracias.
Rafa Corts