Los shortcodes no funcionan en tema personalizado

1 feb 2013, 17:25:19
Vistas: 26.7K
Votos: 6

Estoy usando un tema personalizado que no desarrollé yo mismo que parece tener deshabilitada o no tiene la función para ningún shortcode, ya sean shortcodes de WordPress o shortcodes de plugins. Principalmente necesito que esta función funcione a través de shortcodes generados por plugins. He revisado varias cosas para ver qué lo está causando pero no he tenido suerte encontrando dónde está el problema. Esto es lo que he verificado.

Cuando cambié de vuelta al tema 2012, los shortcodes funcionaban bien.

He desactivado todos mis otros plugins para verificar si se debía a alguna incompatibilidad. Sin cambios.

Me he asegurado de que la plantilla de página tiene el loop correcto según esta publicación: los shortcodes de plugins no funcionan en tema personalizado - no sé cómo arreglarlo

*Edición: Aquí está el código de la plantilla de página

    <?php get_header(); ?>
<div id="main">
<div class="layout">

    <div id="content">
    <aside id="block_menu_like_division">
        <section>
            <h1 id="title_like_division"></h1>
            <nav id="nav_like_division">

            </nav>
        </section>
    </aside>
      <section>
        <article> 
          <?php // mientras ( have_posts() ) : the_post(); 
            if(get_the_content()){
          ?>

            <?php if(get_the_ID() == 1228) { ?>
                <h1>Formularios</h1>
                <?php the_content(); ?>
            <?php }elseif(get_the_ID() == 1191){ ?>
               <!-- <h5>&nbsp</h5> -->
                <?php the_content(); ?>
            <?php }else{ ?>

                <h1><?php the_title(); ?></h1>
        <?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(get_the_content()); ?>
            <?php } ?>
            <?php }else{
                $arg = query_posts(array('post_parent' => get_the_ID(), 'post_type' => 'page', 'posts_per_page'=>1,  'orderby' => 'menu_order', 'order' => 'ASC' ));

//                    $arg[0]->guid;
                ?>
                <?php if($arg[0]->ID == 1811):?>
                <?php
                $ag = query_posts(array('post_parent' => $arg[0]->ID, 'post_type' => 'page','posts_per_page'=>1,  'orderby' => 'menu_order',  'order' => 'ASC' ));
                ?>
                <h1><?php echo $ag[0]->post_title; ?></h1>
                <?php echo $ag[0]->post_content; ?>
                <?php else:?>
                <h1><?php echo $arg[0]->post_title; ?></h1>
                <?php echo $arg[0]->post_content; ?>
                <?php endif;?>
                <?php }?>
          <?php // endwhile; // fin del loop. ?>
        </article>
      </section>
    </div>
    <aside>
        <?php include('quick_links.php'); ?>



        <?php
        $url = $_SERVER['REQUEST_URI'];
        $url_parse = parse_url($url);
        $level = explode('/', $url_parse['path']);


        if($level[1] == 'education' || $level[1] == 'fellowship'):?>
        <?php
        $catid = get_query_var('cat');
            $s = query_posts( array(
                'post_type' => 'post',
                'post_status' => 'publish',
                'category' => 'news',
                'posts_per_page' => 0, 
                'orderby' => 'post_date',
                'order' => 'DESC'));
        while( have_posts() ) : the_post();
            $newsList[] = array(
                'title' => get_the_title(),
                'link' => apply_filters('the_permalink', get_permalink()),
                'date' => apply_filters('the_time', get_the_time( 'F j, Y' ), 'F j, Y'),
                'expert' => apply_filters('the_excerpt', get_the_excerpt()),
                'author' => get_the_author(),
                );
        endwhile;
        wp_reset_query();


        ?>
        <section>
            <h2>Noticias e Información</h2>
                <div id="asideNews" class="itemsList">
            <div class="listItem">
                <article>
                    <header>
                        <h3><a href="<?php echo $newsList[0]['link']; ?>"><?php echo $newsList[0]['title']; ?></a></h3>
                    </header>
                    <p><?php echo $newsList[0]['expert']; ?></p>
                    <div class="readmore"><a href="<?php echo $newsList[0]['link']; ?>">Leer Más</a></div>
                </article>
            </div>
        </div>


            </section>

        <?php else:?>
        <?php

            include('testimonials.php');

            ?>
      <?php endif;?>

    </aside>
</div>

</div>
<?php get_footer(); ?>

Existe la posibilidad de que el desarrollador original simplemente reutilizó un tema desarrollado para una versión más antigua de WordPress cuando los shortcodes no existían.

¿Alguna idea de dónde buscar a continuación?

8
Comentarios

Publica el código de tu Loop, por favor.

s_ha_dum s_ha_dum
1 feb 2013 17:27:00

Código añadido arriba

NTL0820 NTL0820
1 feb 2013 18:32:29

Revisa tu archivo functions.php u otros archivos incluidos para ver filtros en the_content, como add_filter('the_content', 'strip_shortcodes');

Rob Vermeer Rob Vermeer
1 feb 2013 18:42:12

Había filtros, pero ninguno referente a shortcodes. Además, hice una búsqueda de "shortcodes" y "shortcode" en el functions.php y obtuve 0 resultados

NTL0820 NTL0820
1 feb 2013 18:45:24

Yo haría una búsqueda de the_content para ver qué filtros hay ahí.

Rob Vermeer Rob Vermeer
1 feb 2013 18:46:14

Sin resultados. Puedes ver el functions.php completo aquí: http://pastie.org/6014295

NTL0820 NTL0820
1 feb 2013 18:51:41

Usa la función que ves aquí: http://goo.gl/3IIRY para ver qué filtros hay para the_content.

Rob Vermeer Rob Vermeer
1 feb 2013 22:01:25

Lamentablemente no creo que esa sea la solución. ¿Podría estar el problema en un archivo diferente además de functions.php?

NTL0820 NTL0820
6 feb 2013 19:59:27
Mostrar los 3 comentarios restantes
Todas las respuestas a la pregunta 2
0

¡Finalmente encontré una solución!!! Después de muchas semanas de búsqueda y probar diferentes soluciones, solo fue cuestión de eliminar "get_" de una referencia a "the_content" en mi page.php. Cambié esto:

<?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(get_the_content()); ?>

Por esto:

<?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(the_content()); ?>

Hasta ahora no he tenido problemas y todos los shortcodes ahora funcionan. Gracias a todos los demás por sus aportes, sin ellos no hubiera sabido dónde ni qué buscar.

13 mar 2013 22:07:10
1

Tu Loop es correcto. Utiliza 'the_content' (como debería) lo que debería activar los filtros the_content y tus shortcodes deberían procesarse igual que en los otros temas que probaste.

Tengo que concluir que tu tema está eliminando filtros o shortcodes. Busca algo como remove_filter( 'the_content', en los archivos de tu tema. También revisa add_filter('the_content',. Luego busca remove_shortcode y observa qué podría estar eliminando.

Quizás el tema está añadiendo un filtro que rompe los shortcodes, pero apostaría por una de las dos primeras opciones.

1 feb 2013 18:43:59
Comentarios

Verificado todo esto sin resultados. No hay filtros añadiendo o eliminando para the_content o remove_shortcode.

NTL0820 NTL0820
1 feb 2013 18:55:09