2015-05-04 59 views
1

我使用下面的PHP腳本找上了Team區我的網站的最新訊息。WordPress的功能 - 修復停止重複代碼

我還使用了非常相似的人找我主頁上的最新消息條目。

爲了減少重複碼(DRY)的量,是有辦法我可以使用一個函數,只是拉在特定自定義後類型例如most_recent('team');將顯示我的Team CPT中最新的帖子。

這裏是我現有的代碼:

<?php 
    // find most recent post 
    $new_loop = new WP_Query(array(
    'post_type' => 'team', 
     'posts_per_page' => 1, 
     "post_status"=>"publish" 
    )); 
?> 

<?php if ($new_loop->have_posts()) : ?> 
    <?php while ($new_loop->have_posts()) : $new_loop->the_post(); ?> 

      <h2><?php the_title(); ?></h2> 

      <?php the_content(); ?> 

    <?php endwhile;?> 
<?php else: ?> 
<?php endif; ?> 
<?php wp_reset_query(); ?> 

回答

1
<?php 
function most_recent($type) { 
    $new_loop = new WP_Query(array(
    'post_type' => $type, 
     'posts_per_page' => 1, 
     "post_status"=>"publish" 
    )); 


if ($new_loop->have_posts()) { 
    while ($new_loop->have_posts()) : $new_loop->the_post(); 

      echo '<h2>'.the_title().'</h2>'; 

      the_content(); 

    endwhile; 
} 
wp_reset_query(); 
} 
?> 
+0

隨着一些工作,完美的工作。現在看起來非常明顯:)我改變了第3行閱讀''post_type'=> $ type,' – michaelmcgurk

+1

Woops,對不起!試圖一次回答兩個問題。帖子已被編輯。 – Kyle

1

是的,這的確是可能的。

首先,你需要做的是,

添加下面的代碼到你的主題functions.php文件:

function most_recent($name){ 

    // find most recent post 
    $new_loop = new WP_Query(array(
         'post_type' => $name, 
         'posts_per_page' => 1, 
         "post_status"=>"publish" 
       )); 

    if ($new_loop->have_posts()) : 
     while ($new_loop->have_posts()) : $new_loop->the_post(); 

      echo "<h2>".the_title()."</h2>"; 
      the_content(); 

      endwhile; 
    else: 
    endif; 
    wp_reset_query(); 
} 

現在你可以用它在你的主題文件夾模板的任何地方象下面這樣:

$most_recent = most_recent('product'); 
echo $most_recent; 

所以在你的情況下,這將是most_recent('team')或甚至你可以使用其他以及就像我爲product

如果您有任何疑問,請告訴我。

+0

非常感謝您的回答和詳細回覆。我發現它非常有幫助:) – michaelmcgurk

+0

很高興你發現它有幫助:)快樂編碼! –