web-dev-qa-db-ja.com

カスタムアーカイブ機能

私は私の教会のウェブサイトのためのカスタムアーカイブページの構築に取り組んでいます。私のアーカイブのページでは、先週の説教を特別な箱の中に一番上に表示し、その後に将来の説教、そして最後に説教アーカイブを表示したいと思います。

将来の説教と説教のアーカイブをタイトルで区切って欲しいのですが。

将来の説教

説教アーカイブ

私の問題は、ページ付け機能を使って古い説教の投稿に行くためにボタンをクリックしたとき、それは私が行っているすべてのアーカイブページに現在と将来の説教を表示することです!

現在の説教および将来の説教を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
Caleb

is_paged()Codex を参照)が必要です。 2、3ページ目などにいる場合はtrueを返し、最初のページにいる場合はfalseを返します。そう...

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

//Display archived sermons.
1
Stephen Harris