it-swarm.com.de

get_the_content funktioniert nicht in Schleife?

Ich versuche, meine Schleife zu ändern, um Post-Daten nach Kategorie zu speichern. Ich habe auf dieser Website einen Code gefunden, der die Titel des Posts anhand ihrer Kategorien speichert, und habe versucht, diesen Code zu ändern, um den Inhalt des Posts zu speichern. Während get_the_title und get_the_category funktionieren, gibt get_the_content jedoch null zurück.

Hier ist der 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 );
  }

Bearbeiten: So verwende ich das $body-Array:

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: Ich habe den vollständigen Code hinzugefügt. Wenn ich ein var dump of body mache, bekomme ich NULL und wenn ich ein var dump von $ q mache, bekomme ich

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" } }

scheinbar egal wie ich den loop bearbeite. Ich bin sehr verwirrt. Jede Hilfe wird sehr geschätzt

2
Jared

echo $post->post_content; gibt Ihren Beitragsinhalt wieder. Denken Sie jedoch daran, dass es sich nicht in der Datenbank befindet (wie bei get_the_content()). Wenn Sie dieselben Filter anwenden möchten, die the_content() empfängt, befolgen Sie die Anweisungen im Codex :

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