Custom archives function

时间:2012-02-07 作者:Caleb

我正在为我的教会网站建立一个自定义档案页面。在我的档案页上,我想把上周的布道放在一个特殊的盒子里,然后是未来的布道,最后是布道档案。

我希望将来的布道和布道档案用标题隔开。。。i、 未来的布道

布道档案

布道档案。。。

我的问题是,当我用分页功能点击按钮转到旧的布道帖子时,它会在我所在的每个归档页面上显示当前和未来的布道!

如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?

以下是我的功能:

// Create the loop for the sermons page
function sermon_posts() {
    if(is_page(\'sermons\')) {
        current_sermon_archives(); ?>
        <h2 class="sm-header">Future Sermons</h2>
        <?php future_sermon_archives(); ?>
        <h2 class="sm-header">Sermon Archives</h2>
        <?php sermon_archives(); 
    } 
}

function current_sermon_archives() {
    $thisSunday = date(\'d\', strtotime(\'last Sunday\'));
    $thisSundayMonth = date(\'n\', strtotime(\'last Sunday\'));
        $lastWeekSermon = new WP_Query(array( \'posts_per_page\' => 1,
                                        \'post_type\' => \'sermon_post\',
                                        \'monthnum\' => $thisSundayMonth,
                                        \'day\' => $thisSunday) );

if ( $lastWeekSermon->have_posts() ) : while ( $lastWeekSermon->have_posts() ) : $lastWeekSermon->the_post();  ?>

<div id="sm-upcoming-archives">
    <h2 class="sm-header">Last Week\'s Sermon</h2>
        <div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

    </div>
</div>
    <?php endwhile; else: ?>
        <?php wp_reset_postdata(); ?>
    <?php endif; 
}

function future_sermon_archives() {
    $current_year = date(\' Y\', strtotime(\'next Sunday\'));
    $current_month = date(\'M \', strtotime(\'next Sunday\'));
    $current_day = date(\'d\', strtotime(\'next Sunday\'));
    $futureSermon = new WP_Query(array( \'showposts\' => \'3\',
                                            \'post_type\' => \'sermon_post\',
                                            \'monthnum\' => $current_month,
                                            \'day\' => $current_day) );

        if ( $futureSermon->have_posts() ) : while ( $futureSermon->have_posts() ) : $futureSermon->the_post();  ?>

<div id="sm-upcoming-archives">
    <h2 class="sm-header">Last Week\'s Sermon</h2>
        <div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

    </div>
</div>
    <?php endwhile; else: ?>
        <?php wp_reset_postdata(); ?>
    <?php endif; 
}

function sermon_archives() {
    query_posts(array(\'post_type\'=>\'sermon_post\', \'paged\' => get_query_var( \'paged\' ) ) ); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

</div>

        <?php endwhile; else: ?>
    <?php endif; ?>
<div class="navigation">
                <?php if (function_exists("pagination")) {                       pagination($additional_loop->max_num_pages);
                        } ?></div>
<?php }
我知道它看起来像很多代码,但实际上它们都是非常相似的函数。。。

如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

你想要的is_paged() (see Codex). 如果您在第2、3页等,则返回true;如果您在第一页,则返回false。所以

if(!is_paged()){
     //Display current / future sermons
}

//Display archived sermons.

结束

相关推荐

显示Archives.php中的所有自定义帖子类型

我该怎么做?archive.php 只有以下内容:wp_get_archives(\'type=monthly\'); 以及wp_get_archives() 没有显示所有帖子类型的参数。我也认为archive-[post_type].php 不是我要找的,因为我希望所有帖子类型都显示在一个归档页面中。谢谢W

Custom archives function - 小码农CODE - 行之有效找到问题解决它

Custom archives function

时间:2012-02-07 作者:Caleb

我正在为我的教会网站建立一个自定义档案页面。在我的档案页上,我想把上周的布道放在一个特殊的盒子里,然后是未来的布道,最后是布道档案。

我希望将来的布道和布道档案用标题隔开。。。i、 未来的布道

布道档案

布道档案。。。

我的问题是,当我用分页功能点击按钮转到旧的布道帖子时,它会在我所在的每个归档页面上显示当前和未来的布道!

如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?

以下是我的功能:

// Create the loop for the sermons page
function sermon_posts() {
    if(is_page(\'sermons\')) {
        current_sermon_archives(); ?>
        <h2 class="sm-header">Future Sermons</h2>
        <?php future_sermon_archives(); ?>
        <h2 class="sm-header">Sermon Archives</h2>
        <?php sermon_archives(); 
    } 
}

function current_sermon_archives() {
    $thisSunday = date(\'d\', strtotime(\'last Sunday\'));
    $thisSundayMonth = date(\'n\', strtotime(\'last Sunday\'));
        $lastWeekSermon = new WP_Query(array( \'posts_per_page\' => 1,
                                        \'post_type\' => \'sermon_post\',
                                        \'monthnum\' => $thisSundayMonth,
                                        \'day\' => $thisSunday) );

if ( $lastWeekSermon->have_posts() ) : while ( $lastWeekSermon->have_posts() ) : $lastWeekSermon->the_post();  ?>

<div id="sm-upcoming-archives">
    <h2 class="sm-header">Last Week\'s Sermon</h2>
        <div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

    </div>
</div>
    <?php endwhile; else: ?>
        <?php wp_reset_postdata(); ?>
    <?php endif; 
}

function future_sermon_archives() {
    $current_year = date(\' Y\', strtotime(\'next Sunday\'));
    $current_month = date(\'M \', strtotime(\'next Sunday\'));
    $current_day = date(\'d\', strtotime(\'next Sunday\'));
    $futureSermon = new WP_Query(array( \'showposts\' => \'3\',
                                            \'post_type\' => \'sermon_post\',
                                            \'monthnum\' => $current_month,
                                            \'day\' => $current_day) );

        if ( $futureSermon->have_posts() ) : while ( $futureSermon->have_posts() ) : $futureSermon->the_post();  ?>

<div id="sm-upcoming-archives">
    <h2 class="sm-header">Last Week\'s Sermon</h2>
        <div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

    </div>
</div>
    <?php endwhile; else: ?>
        <?php wp_reset_postdata(); ?>
    <?php endif; 
}

function sermon_archives() {
    query_posts(array(\'post_type\'=>\'sermon_post\', \'paged\' => get_query_var( \'paged\' ) ) ); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="scripture-post">
            <h2><p><?php the_title(); ?></p><span class="sm-date"> - <?php the_time(get_option(\'date_format\')); ?></span></h2>

                    <?php echo get_the_term_list( get_the_ID(), \'speaker\' ) ?>
<?php the_content(); ?>
<div class="sermonexcerpt">
                        <?php $thereisdescription = get_post_meta($post->ID, "_description", true);
                        if($thereisdescription){ ?>
                            <?php echo get_post_meta($post->ID, "_description", true); ?>
                        <?php }else{ ?>
                        <?php } ?></div>

</div>

        <?php endwhile; else: ?>
    <?php endif; ?>
<div class="navigation">
                <?php if (function_exists("pagination")) {                       pagination($additional_loop->max_num_pages);
                        } ?></div>
<?php }
我知道它看起来像很多代码,但实际上它们都是非常相似的函数。。。

如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

你想要的is_paged() (see Codex). 如果您在第2、3页等,则返回true;如果您在第一页,则返回false。所以

if(!is_paged()){
     //Display current / future sermons
}

//Display archived sermons.

相关推荐

Custom archives function

我正在为我的教会网站建立一个自定义档案页面。在我的档案页上,我想把上周的布道放在一个特殊的盒子里,然后是未来的布道,最后是布道档案。我希望将来的布道和布道档案用标题隔开。。。i、 未来的布道布道档案布道档案。。。我的问题是,当我用分页功能点击按钮转到旧的布道帖子时,它会在我所在的每个归档页面上显示当前和未来的布道!如何使当前和未来的布道仅显示在第1页上,而不在单击查看旧帖子时显示?以下是我的功能:// Create the loop for the sermons page function se