2014-12-06 84 views
0

我有用於顯示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; 
} 

回答

1

你的簡碼是純粹的邪惡。你永遠不應該使用extract()extract()將被完全從Wordpress核心中刪除。這也應該告訴你一些事情真的很不好。見相應的trac ticket here

此外,永遠不會使用query_posts

注意:此功能不適用於插件或主題。正如後面所解釋的,改變主查詢有更好,更高性能的選項。 query_posts()過於簡單並且存在問題,通過用查詢的新實例替換頁面的主查詢來修改主查詢。它效率低下(重新運行SQL查詢),並在某些情況下徹底失敗(特別是在處理帖子分頁時)。

您應該使用WP_Query

你應該去看望食品法典委員會的Shortcode 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; 
} 
+0

謝謝,但如何插入日期和縮略圖在

  • '.get_the_title().'
  • ? – user3794215 2014-12-06 10:44:58

    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; 
        }