摘录获得页面摘录,而不是最近的帖子摘录

时间:2014-02-07 作者:Alexnl

参见www.pinosalon。com,最近的博客与欢迎相同。

在主页上。用作主页的php模板我有一个循环,它只显示欢迎文本。

在模板的下面几行,在循环之外,我得到了最近的帖子,并显示了带有\\u摘录()的最新帖子。标题和阅读更多的链接很有用,但是\\u摘录从循环中而不是从最近的帖子中获取内容。

根据另一个问题建议的解决方案更新代码后,将不再显示摘录。

以下是我使用的代码:

//Block displays the current page\'s content
<?php while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
<?php endwhile; ?>

//Block that should display the latest post
<?php
$args = array( \'numberposts\' => \'1\',\'post_type\' => \'post\' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ) : setup_postdata($recent);
    echo \'<h3><a href="\' . get_permalink($recent["ID"]) . \'" title="Look \'.esc_attr($recent["post_title"]).\'" >\' .   $recent["post_title"].\'</a></h3>\';
echo the_excerpt();
echo \'<a href="\' . get_permalink($recent["ID"]) . \'" title="Look \'.esc_attr($recent["post_title"]).\'" >Read More</a>\';
endforeach;
?>

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

你的问题是你正在使用$recent_posts 作为变量名。如果setup_postdata() 不起作用,那么你的the_excerpt() 应返回当前页面的任何摘录。

setup_postdata() codex page:

must 将引用传递给全局$post 变量,否则像\\u title()这样的函数无法正常工作。

因此,请更改此选项:

$args = array( \'numberposts\' => \'1\',\'post_type\' => \'post\' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ) : setup_postdata($recent);
对此:

global $post;
$args = array( \'numberposts\' => \'1\',\'post_type\' => \'post\' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $post ) : setup_postdata($post);
更好的是,使用WP_Query 这是二次回路的完美选择!

$args = array( \'posts_per_page\' => \'1\',\'post_type\' => \'post\' );
$recent_posts = new WP_Query( $args );
if( $recent_posts->have_posts() ) : while( $recent_posts->have_posts() ) : $recent_posts->the_post();
和替换endforeach; 具有endwhile; endif;

奖金最佳实践,切勿使用page-{anything}.php 对于模板名称,因为这是中的保留模式the template hierarchy. 对于静态首页,请使用front-page.php 相反。)

结束

相关推荐

excerpt not showing up

我有一个自定义的主页模板,在其中,我想显示一些类别的摘录。但即使是简单的the_excerpt() 不起作用。我试过了the_title 和the_content, 但仅显示标题而不显示内容。以下是我的代码,我是否遗漏了什么? <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php the_excerpt();?> <?php endwhile;