WordPress功能 - 修复以停止重复代码

时间:2015-05-04 08:07:12

标签: php wordpress

我使用以下PHP脚本查找我网站Team区域的最新帖子。

我也使用非常相似的一个来查找我主页上最新的新闻条目。

为了减少重复代码的数量(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(); ?>

2 个答案:

答案 0 :(得分: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();
}
?>

答案 1 :(得分: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一样用于其他人。

如果您有任何疑问,请告诉我。