web-dev-qa-db-ja.com

get_the_contentがループしていませんか?

カテゴリ別に投稿データを保存するようにループを変更しようとしています。私はこのサイトでそれらのカテゴリーに基づいて記事のタイトルを保存するコードを見つけ、記事の内容を保存するためにこれを修正しようとしました。ただし、get_the_titleおよびget_the_categoryは機能しますが、get_the_contentはnullを返します。

これがコードです:

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 );
  }

編集:これは私が$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>');
}

編集2:私は完全なコードを追加しました。 bodyのvar dumpを実行するとNULLになり、$ qのvar dumpを実行すると次のようになります。

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

ループの編集方法にかかわらず、一見無関係です。私は非常に混乱しています。任意の助けは大歓迎です

2
Jared

echo $post->post_content;はあなたの投稿内容を反映します。ただし覚えておいてください、それはデータベースから生のものです(get_the_content()と同じ)。 the_content()が受け取るのと同じフィルタを適用したい場合は、 codex の指示に従ってください。

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