Los códigos abreviados de WordPress solo funcionan en publicaciones, no en páginas. tema personalizado

2 minutos de lectura

Estoy creando un tema para un amigo, pero por alguna razón no puedo hacer que los shortcodes funcionen en Pages. Solo trabajan en Correos.

Mi archivo page.php es muy simple en este momento:

<?php get_header(); ?>
<?php
if (have_posts()) :
    while (have_posts()) : the_post();
        echo '<div class="hero-unit"><div class="container"><h1>'.get_the_title().'</h1></div></div>';
        echo '<div class="container clearfix" id="main-content">'.get_the_content().'</div>';
    endwhile;
endif;
?>
<?php get_footer(); ?>

Esto funciona bien, pero solo muestra el código abreviado como texto. IE, estoy tratando de usar el código abreviado [wp_sitemap_page] la página simplemente muestra ‘[wp_sitemap_page]’ en el texto.

¿Cual podría ser el problema?

El contenido de su publicación se muestra a través de echo get_the_content() que es una función que devuelve el contenido SIN aplicar los filtros predeterminados (wpautop, do_shortcode etc) que se aplican normalmente cuando se utiliza the_content() en cambio.

Esto debería arreglarlo:

<?php
if (have_posts()) :
    while (have_posts()) : the_post(); ?>
        <div class="hero-unit"><div class="container"><h1><?php the_title(); ?></h1></div></div>
        <div class="container clearfix" id="main-content"><?php the_content(); ?></div>
    <?php endwhile;
endif;
?>

  • Perfecto. ¡Gracias por tu ayuda, Ennui!

    – usuario1636130

    13 de diciembre de 2013 a las 13:54

  • @ user1636130 ¡Marque como la solución cuando tenga la oportunidad! También lo acabo de actualizar con el código fijo que usa the_title() y the_content() más bien que get_the_title() y get_the_content().

    – hastío

    13 de diciembre de 2013 a las 13:55

  • Gracias por su tiempo 🙂 Lo marcaré tan pronto como me lo permitan.

    – usuario1636130

    13 de diciembre de 2013 a las 13:57

  • también podrías hacer $content = get_the_content(); echo apply_filters('the_content', $content); que pasará el contenido sin filtrar devuelto por get_the_content() a través del filtro predeterminado utilizado en the_content().

    – hastío

    13 de diciembre de 2013 a las 13:57

¿Ha sido útil esta solución?