我最近更新了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");
?>
为什么它不输出这一个内容?
你真是太棒了。感谢。
答案 0 :(得分:1)
setup_postdata
与使用WP_Query
的普通the_post()
并不完全相同,因此并非所有模板标记都能按照预期的方式显示帖子。
您应该重写代码以使用自定义WP_Query
和传统循环,而不是使用foreach
来迭代帖子对象。
类似的东西:
$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; ?>
这应该指向正确的方向。如果您坚持使用foreach
和get_posts
方法,则可以始终使用一些简单的字符串函数(即substr()
来截断post_content
属性的$post
属性。 <?php the_content(); ?>
对象,例如将<?php echo substr($post->the_content, 0, 80); // displays first 80 chars of post ?>
行替换为:
{{1}}
答案 1 :(得分:0)
你应该定义 id。
<?php echo get_the_excerpt($post->ID); ?