我有下一个代码显示最新的文章在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;
}
发布于 2014-12-06 08:13:06
你的短码太邪恶了。你永远不应该使用extract()
。extract()
将从Wordpress核心完全删除。这也会告诉你extract()
到底有多糟糕。参见相应的这里的电车票
而且,永远不要使用query_posts
。
注意:这个函数不适合插件或主题使用。正如后面解释的那样,有更好的、更好的执行选项来更改主查询。query_posts()通过将页面替换为查询的新实例来修改页面的主查询,这是过于简单和有问题的方法。它效率低下(重新运行SQL查询),在某些情况下会彻底失败(特别是在处理posts分页时)。
你应该使用WP_Query
您应该访问法典中的短代码API,看看如何正确构造一个短代码。
考虑到这一点,代码应该如下所示
function last_article($atts){
$a = shortcode_atts( array(
'posts' => 1,
), $atts );
$return_string = '<ul>';
$q = new WP_Query(array('orderby' => 'date', 'order' => 'DESC' , 'posts_per_page' => $a['posts']));
if ($q->have_posts()) {
while ($q->have_posts()) {
$q->the_post();
$return_string .= '<li>'.the_date().'</li>';
$return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
if (has_post_thumbnail()) {
$return_string .= '<li>'.the_post_thumbnail().'</li>';
}
}
}
$return_string .= '</ul>';
wp_reset_postdata();
return $return_string;
}
发布于 2014-12-06 07:18:47
试试这个:
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;
}
https://stackoverflow.com/questions/27329267
复制相似问题