我正在寻找一种方法来在我的 Wordpress 网站主页上显示最后 5 个帖子,所以我认为我需要使用短代码来执行此操作,但是我找不到任何预先存在的代码来添加到 functions.php这将显示标题、日期和帖子摘录。
有人可以帮我解决这个问题吗?
有多种方法可以做到这一点,但基本思想类似于您将在主题的INDEX.PHP页面中看到的代码。您进行查询,循环显示帖子,然后在最后重置查询,这样您所做的就不会干扰您的主页。
function Last5posts()
{
$args = array( "showposts" => 5 );
query_posts($args);
$content = "";
if( have_posts() ) :
while( have_posts() ) :
the_post();
$link = get_permalink();
$title = get_the_title();
$date = get_the_date();
$content .= "<div style='padding: 5px; border: 1px solid red'>";
$content .= "<h3><a href='$link' target='_top'>$title / $date</a></h3>\n";
$content .= "<p class='excerpt'>" . get_the_excerpt() . "</p>";
$content .= "</div>";
endwhile;
wp_reset_query();
endif;
// Leave one line commented out depending on usage
echo $content; // For use as widget
//return $content; // for use as shortcode
}
要将其注册为小部件,请在末尾启用“echo”,然后将此行添加到文件底部:
register_sidebar_widget(__('Last 5 Posts'), 'Last5posts');
您可能需要添加一些额外的代码来将输出放入小部件包装器 DIV 中,就像您的其他侧边栏小部件一样。(或者,如果您在传统侧边栏以外的地方使用它,则不会。)
您还可以使用下面的行将其注册为简码处理程序。注释掉最后的“echo”,取消注释“return”。
add_shortcode('Last5Posts', 'Last5posts' );
您需要确保不在博客文章中使用短代码,否则您可能最终会递归调用它。恐怕是件坏事。
您可能还希望在函数名称中添加特定于主题的前缀以避免命名空间冲突。
<?php
$args = array('numberposts' => 5);
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
echo $recent["post_title"].' '.$recent['post_date'].' '.$recent['post_excerpt'].'<br />';
}
?>
Wordpress Codex还不错。