do_shortcode no funciona

3 minutos de lectura

avatar de usuario
sjobe

He estado atascado en esto por un tiempo. Estoy trabajando en un sitio de wordpress donde escribí el tema desde cero, uso llamadas php para obtener la funcionalidad de wordpress que necesito en ciertas secciones.

Estoy tratando de usar un complemento, pero lo llamo a través de

echo do_shortcode('[STORE-LOCATOR]');

simplemente no está funcionando. Incluso cuando cambio a la plantilla predeterminada y publico ese código, todavía no funciona. simplemente hace eco "[STORE-LOCATOR]"

Cualquier ayuda sería muy apreciada.

  • Desde el documentos: “Si no hay etiquetas de código abreviado definidas, el contenido se devolverá sin ningún tipo de filtrado. Esto podría causar problemas si un complemento está deshabilitado, ya que su código abreviado seguirá apareciendo en la publicación o el contenido”. – ¿El complemento está realmente activo?

    – Peka

    12 de marzo de 2011 a las 14:10


  • Lo hace [STORE-LOCATOR] funciona en el contenido de la publicación?

    – Dogberto

    12 de marzo de 2011 a las 14:11

  • @Pekka sí, el complemento también está activo

    – sjobe

    12 de marzo de 2011 a las 14:39

avatar de usuario
pájarosonalambre

[STORE-LOCATOR] probablemente no es un ‘Código corto‘ en el sentido de WordPress.

Encontré esto en un complemento diferente, Stream media player. Usan la misma sintaxis que los shortcodes, pero en realidad no lo son.

Intenta usar:

echo apply_filters( 'the_content',' [STORE-LOCATOR] ');

en vez de do_shortcodey ver si ayuda.

  • Acabo de encontrarme con este problema exacto (localizador de tiendas) y encontré esta pregunta. Esta respuesta solucionó el problema y debería ser la respuesta aceptada.

    –David Myers

    8 de junio de 2013 a las 0:59

  • ¿Cómo es que esta no es la respuesta aceptada? Esto funciona. ¡Tuve este problema con un complemento de comercio electrónico! ¡Gracias!

    – ProblemasDeSumit

    06/10/2013 a las 21:07

  • ¡Tú, amigo, eres un salvador! ¡Gracias!

    – PNJ

    16/09/2015 a las 17:26

  • ¡Esta respuesta era exactamente lo que estaba buscando! Estaba usando el complemento Calendario llamado código abreviado {CALENDAR} pero do_shortcode() no funcionó. apply_filters() lo hizo. ¡GRACIAS!

    – Llamada Landon

    23/09/2016 a las 18:01

do_shortcode() devuelve una cadena. Lo hago funcionar haciendo:

<?php echo do_shortcode(...); ?>

  • esta es la solución simple después de 2 horas te amo

    – Gabbr Issimo

    29 de octubre de 2020 a las 9:17

Esto es específico del complemento Store Locator, no do_shortcode en general.

apply_filters puede ser una solución alternativa aceptable para otros complementos, pero esto no funciona para Store Locator; solo verás un espacio vacío y algunos controles. Esto se debe a que está buscando ese shortcode en el cuerpo de la página/publicación para determinar si incluir o no todas sus referencias js en la parte superior de la página. Y sin estas referencias, nada funcionará. Ver el sl_head_scripts función en sl-functions.php.

Para cambiar este comportamiento, simplemente modifique esa función para que coincida con el título de la página. En mi caso, lo quería solo en una página de “tienda”, así que comenté todo el $on_sl_page prueba y lo reemplazó con esto:

$on_sl_page = ( strpos($pagename, 'shop') === 0 );

Luego lo llamé desde mi página con apply_filters como se indica en la otra respuesta:

echo apply_filters( 'the_content','[STORE-LOCATOR]');

Y esto parece funcionar perfectamente.

avatar de usuario
fabio

echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]');

Intente usar shortcode después de que se haya configurado el entorno de WordPress.

function my_function() {
   echo do_shortcode('[STORE-LOCATOR]');
}
             
add_action('wp', 'my_function');

avatar de usuario
FísicaEsRelativamente Genial

Si está escribiendo todo desde cero, querrá asegurarse de que la función que cree esté en el archivo php raíz de su complemento. La función puede parecerse a esto, pero tendrá que cambiar la lógica que esté usando para llegar a la ubicación de la tienda:

<?php
function doCoolStuff () {
$var1 = "value1";
$var2 = "value2";
$output = $var1+$var2;
}
return $output;
}
add_shortcode('SOTRE-LOCATIOR', 'doCoolStuff');
?>

Luego en tu plantilla pon el código:

<?php echo do_shortcode('[STORE-LOCATOR]');?>

¡Feliz codificación y buena suerte!

¿Ha sido útil esta solución?