Get_the_Content不在循环中工作?

时间:2016-04-25 作者:Jared

我正在尝试修改我的循环以按类别保存帖子数据。我在这个网站上找到了一些代码,这些代码根据文章的类别保存了文章的标题,并试图修改这些代码来保存文章的内容。然而,尽管get_the_titleget_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>\');
}
Edit2:我添加了完整的代码。当我对body进行var转储时,我得到NULL,当我对$q进行var转储时,我得到

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 个回复
SO网友:Owais Alam

echo $post->post_content; 将回应您的帖子内容。但请记住,它是数据库中的原始数据(与get_the_content()). 如果要应用与the_content() 接收,按照codex:

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

SO网友:Anish Rai

也许可以试试<?php 而不是<? 在您的代码行中,不确定,但我理解这可能会导致问题。

或使用<?php echo $post->post_content; ?>尝试不使用“阅读更多”仅表示<?php the_content(); ?>

相关推荐

Ordering terms whilst in loop

我有一个页面模板,显示所有;“发布”;在两个自定义分类中,帖子显示在一个表中$type = $_GET[\'type\']; $category = $_GET[\'category\']; args = array( \'post-type\' => \'literature\', \'posts_per_page\' => -1, \'tax_query\' => array(