0

我最近更新了 wordpress,现在所有内容都在为这个模块输出,除了“the_excerpt()”

<?php

function blog_feed_content(){
  ?>
  <ul id="blog_list" class="jscroll">
            <?php
            global $post;
            $args = array('category' => 4 );
            $myposts = get_posts( $args );
            foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <li class="post clearfix" id="post-<?php the_ID(); ?>">
                    <div class="post-content clearfix">
                        <h2 class="post-title"><?php the_title(); ?></h2>
                        <div class="post-date"><?php the_time('F Y') ?></div>
                        <div class="post-text">
                             <?php the_excerpt(); ?> 
                        </div>
                    </div>
                </li>
            <?php endforeach; ?>

    </ul>


  <?php
}

function widget_blog_feed($args){
  extract($args);
  echo $before_widget;
  echo $before_title;?>Blog Feed<?php echo $after_title;
  blog_feed_content();
  echo $after_widget;
}

function init_blog_feed() {
  register_sidebar_widget(__('blog_widget'), 'widget_blog_feed');
}
add_action("plugins_loaded", "init_blog_feed");
?>

为什么它不输出这一条内容?

你们都很棒。谢谢。

4

2 回答 2

1

setup_postdataWP_Query与使用普通的 with不完全相同,the_post()因此并非所有模板标签都可以使用这种显示帖子的方法按预期工作。

您应该重写代码以使用自定义WP_Query和传统的 Loop,而不是使用 aforeach来遍历 post 对象。

就像是:

$myposts = new WP_Query('cat=4');
if( $myposts->have_posts() ) : while( $myposts->have_posts() ) : $myposts->the_post(); ?>
    <li class="post clearfix" id="post-<?php the_ID(); ?>">
        <div class="post-content clearfix">
            <h2 class="post-title"><?php the_title(); ?></h2>
            <div class="post-date"><?php the_time('F Y') ?></div>
            <div class="post-text">
                 <?php the_excerpt(); ?> 
            </div>
        </div>
   </li>
<?php endwhile;
wp_reset_query;
endif; ?>

那应该为您指明正确的方向。如果您坚持使用foreachandget_posts方法,您总是可以使用一些简单的字符串函数(即从对象的属性中substr()截断一些摘录,例如将行替换为:post_content$post<?php the_content(); ?>

<?php echo substr($post->the_content, 0, 80); // displays first 80 chars of post ?>
于 2013-05-13T20:20:58.820 回答
0

你应该定义id。

<?php echo get_the_excerpt($post->ID); ?
于 2021-07-06T16:39:56.593 回答