在wordpress中功能最新发布

时间:2014-12-06 07:09:25

标签: wordpress

我有下一个代码,用于显示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;
}

2 个答案:

答案 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()