Código abreviado que aparece en la parte superior del contenido en lugar de en el lugar donde lo necesito

2 minutos de lectura

avatar de usuario
usuario1368968

Soy consciente de que probablemente sea un problema de devolución. Así que dividí el contenido, uno en una función llamada thelist y el otro es una función real que lo devuelve. El código sigue a la pregunta.

El shortcode real funciona, excepto que el contenido aparece en la parte superior antes que el resto del contenido. pensé que el now_include_post return lo arreglaría, sin embargo no lo hace. ¿Alguien puede ayudar?

function thelist() {
if (have_posts()) : while (have_posts()) : the_post();
?>  
        <div id="post-<?php the_ID(); ?>"  <?php post_class('thumb'); ?>>
            <a href="https://stackoverflow.com/questions/10406673/<?php the_permalink() ?>" class="thumb-link">
            <?php
    if (!post_password_required())  {
                    if (has_post_thumbnail()) {
                        the_post_thumbnail();
                    }
                } else {
                    ?>
                    <img src="<?php bloginfo('template_url') ?>/img/locked.png"  />
        <?php } ?>
            </a>
            <h2>
                <a href="https://stackoverflow.com/questions/10406673/<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a>
            </h2>
        </div>
<?php /* end post */ ?>
<?php
    endwhile;
    endif;
    wp_reset_query();
    }
    ?>
    <?php

function now_include_post($atts) {
$thepostid = intval($atts[id]);
query_posts("p=$thepostid");
$output .= thelist();
return $output;
}

Desea devolver todo el texto en lugar de generarlo en ese momento cuando está escapando de PHP.

Al comienzo de su función thelist(), inicie un búfer de salida con

ob_start();

Luego, al final, cierre este búfer y devuelva su contenido con

return ob_get_clean();

Eso devolverá el contenido en lugar de repetirlo de inmediato, que es lo que desea hacer en el caso de un código abreviado de WP

Información de PHP sobre funciones de búfer de salida

  • Eso es realmente excepcional. ¡Muchas gracias por tu ayuda y ese enlace!

    – usuario1368968

    5 de mayo de 2012 a las 7:21

  • Es 2014 y después de 2 años tu respuesta me salvó 🙂 ¡Gracias!

    usuario3057089

    02/04/2014 a las 11:01

¿Ha sido útil esta solución?