我有下一个代码,用于显示wordpress中的最新帖子。我想添加缩略图和日期。有什么建议吗?
function last_article($atts){
extract(shortcode_atts(array(
'posts' => 1,
), $atts));
$return_string = '<ul>';
query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts));
if (have_posts()) :
while (have_posts()) : the_post();
$return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
endwhile;
endif;
$return_string .= '</ul>';
wp_reset_query();
return $return_string;
}
答案 0 :(得分:1)
试试这个:
function last_article($atts){
extract(shortcode_atts(array(
'posts' => 1,
), $atts));
$return_string = '<ul>';
query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts));
if (have_posts()) :
while (have_posts()) : the_post();
$return_string .= '<h4>'.the_date().'</h4>';
$return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
if (has_post_thumbnail()) {
$return_string .= '<div>'.the_post_thumbnail().'</div>';
}
endwhile;
endif;
$return_string .= '</ul>';
wp_reset_query();
return $return_string;
}
答案 1 :(得分:1)
你的短代码是纯粹的邪恶。你永远不应该使用extract()
。 {Word 1}将从Wordpress核心中完全删除。这也应该告诉你真正的错误extract()
。请参阅相应的trac ticket here
此外,永远不要使用query_posts
。
注意:此功能并非由插件或主题使用。如后面所述,有更好的,更高性能的选项来改变主查询。 query_posts()是一种过于简单化和有问题的方法来修改页面的主要查询,方法是用新的查询实例替换它。它是低效的(重新运行SQL查询)并且在某些情况下会彻底失败(特别是在处理帖子分页时)。
您应该使用WP_Query
您应该访问codex中的Shortcode API并了解如何正确构建短代码
考虑到这一点,您的代码应该看起来像这样
extract()