web-dev-qa-db-fra.com

get_the_content ne fonctionne pas en boucle?

J'essaie de modifier ma boucle pour enregistrer les données de publication par catégorie. J'ai trouvé sur ce site du code qui enregistrait les titres de l'article en fonction de leurs catégories et j'ai essayé de le modifier pour enregistrer le contenu de l'article. Cependant, alors que get_the_title et get_the_category fonctionnent, get_the_content renvoie null.

Voici le code:

if ( false === ( $q = get_transient( 'category_list' ) ) ) {

    $args = array( 
        'posts_per_page' => -1
    );

    $query = new WP_Query($args); 

    $q = array();

    $body = array();

    while ( $query->have_posts() ) { 

        $query->the_post(); 

        $a = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>';

        $post_id = get_the_ID();

        $post_id = $post->ID;

        $body[$post_id] = array();

        $body[$post_id]['title'] = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>'; //works

        $body[$post_id]['content'] = get_the_content('Read more');

        $categories = get_the_category();

        foreach ( $categories as $key=>$category ) {

            $b = '<a href="' . get_category_link( $category ) . '">' . $category->name . '</a>';

        }

        $q[$b][] = $post_id; // Create an array with the category names and post titles

    }


    /* Restore original Post Data */
    wp_reset_postdata();

    set_transient( 'category_list', $q, 12 * HOUR_IN_SECONDS );
  }

Edit: Voici comment j'utilise le tableau $body:

foreach($q[$b] as $post) {
  echo('<div class="teaser"><div class="teaser-title"><a href = "">' . $post . '</a></div><div class="teaser-text">'. $body[$post] . '</div><div class="teaser-footer"><p>pemsource.org</p></div></div>');
}

Edit2: J'ai ajouté le code complet. Quand je fais un dump var du corps, je reçois NULL et quand je fais un dump var de $ q je reçois

array(3) { ["Conundrums"]=> array(1) { [0]=> string(64) "new post" } ["Tips and Tricks"]=> array(1) { [0]=> string(80) "Tips and tricks" } ["Uncategorized"]=> array(1) { [0]=> string(78) "Tips and Tricks" } }

apparemment quelle que soit la façon dont je modifie la boucle. Je suis très confus. Toute aide est très appréciée

2
Jared

echo $post->post_content; fera écho au contenu de votre message. Gardez à l'esprit cependant que c'est brut de la base de données (identique à get_the_content()). Si vous souhaitez appliquer les mêmes filtres que the_content() reçoit, suivez les instructions dans le codex :

<?php
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
?>
1
Owais Alam