每天自动创建包含最后三个帖子的新页面

时间:2011-04-23 作者:Ryan

是否可以创建以下内容:

每天动态创建一个新页面,包含最后三篇帖子,将此页面存档,以便明天的页面是一个新页面,包含三篇最新帖子,基本上我想使用WordPress发布新闻,我们每天发布三篇。当天的页面应包含所有三个故事,然后进行归档,以便创建第二天的页面。

如果你有任何想法如何设置这样的东西,我将不胜感激。

3 个回复
最合适的回答,由SO网友:Ján Bočínec 整理而成

您可以创建日期。php(您可以从主题文件夹中的存档文件(archive.php)或索引文件(index.php)复制此文件的内容),主题文件夹将处理所有“day”页面。。。

<?php get_header(); ?>

        <div id="container">
            <div id="content" role="main">

<?php
    $day = get_query_var(\'day\');
    $monthnum = get_query_var(\'monthnum\');
    $year = get_query_var(\'year\');

if ( is_day() ) : ?>
    <a href="<?php echo get_day_link($year, $monthnum, $day-1); ?>">Previous day\'s posts</a> |
    <a href="<?php echo get_day_link(); ?>">This day\'s posts</a> 
    <?php if ( mktime(0, 0, 0, $monthnum, $day, $year) < mktime(0, 0, 0) ) : ?>
     | <a href="<?php echo get_day_link($year, $monthnum, $day+1); ?>">Next day\'s posts</a>
    <?php endif; ?> 
<?php elseif ( is_month() ) : ?>
    <a href="<?php echo get_month_link($year, $monthnum-1); ?>">Previous month\'s posts</a> |
    <a href="<?php echo get_month_link(); ?>">This month\'s posts</a> 
    <?php if ( mktime(0, 0, 0, $monthnum) < mktime(0, 0, 0) ) : ?>
     | <a href="<?php echo get_month_link($year, $monthnum+1); ?>">Next month\'s posts</a>
    <?php endif; ?>
<?php elseif ( is_year() ) : ?>
    <a href="<?php echo get_year_link($year-1); ?>">Previous year\'s posts</a> |
    <a href="<?php echo get_year_link(); ?>">This year\'s posts</a> 
    <?php if ( mktime(0, 0, 0, 0, 0, $year) < mktime(0, 0, 0, 0, 0) ) : ?>
     | <a href="<?php echo get_year_link($year+1); ?>">Next year\'s posts</a>
    <?php endif; ?>
<?php endif; ?>
<?php
    /* Queue the first post, that way we know
     * what date we\'re dealing with (if that is the case).
     *
     * We reset this later so we can run the loop
     * properly with a call to rewind_posts().
     */
    if ( have_posts() ) :
        the_post();
?>

            <h1 class="page-title">
<?php if ( is_day() ) : ?>
                <?php printf( __( \'Daily Archives: <span>%s</span>\' ), get_the_date() ); ?>
<?php elseif ( is_month() ) : ?>
                <?php printf( __( \'Monthly Archives: <span>%s</span>\' ), get_the_date( \'F Y\' ) ); ?>
<?php elseif ( is_year() ) : ?>
                <?php printf( __( \'Yearly Archives: <span>%s</span>\' ), get_the_date( \'Y\' ) ); ?>
<?php else : ?>
                <?php _e( \'Blog Archives\', \'twentyten\' ); ?>
<?php endif; ?>
            </h1>
<?php endif; ?>
<?php
    /* Since we called the_post() above, we need to
     * rewind the loop back to the beginning that way
     * we can run the loop properly, in full.
     */
    rewind_posts();

    /* Run the loop for the archives page to output the posts.
     * If you want to overload this in a child theme then include a file
     * called loop-archive.php and that will be used instead.
     */

if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

                <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                    <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

                    <div class="entry-summary">
                        <?php the_excerpt(); ?>
                    </div><!-- .entry-summary -->

                    <div class="entry-utility">
                        <?php if ( count( get_the_category() ) ) : ?>
                            <span class="cat-links">
                                <?php printf( __( \'<span class="%1$s">Posted in</span> %2$s\' ), \'entry-utility-prep entry-utility-prep-cat-links\', get_the_category_list( \', \' ) ); ?>
                            </span>
                            <span class="meta-sep">|</span>
                        <?php endif; ?>
                        <?php
                            $tags_list = get_the_tag_list( \'\', \', \' );
                            if ( $tags_list ):
                        ?>
                            <span class="tag-links">
                                <?php printf( __( \'<span class="%1$s">Tagged</span> %2$s\' ), \'entry-utility-prep entry-utility-prep-tag-links\', $tags_list ); ?>
                            </span>
                            <span class="meta-sep">|</span>
                        <?php endif; ?>
                        <span class="comments-link"><?php comments_popup_link( __( \'Leave a comment\', \'twentyten\' ), __( \'1 Comment\' ), __( \'% Comments\' ) ); ?></span>
                        <?php edit_post_link( __( \'Edit\' ), \'<span class="meta-sep">|</span> <span class="edit-link">\', \'</span>\' ); ?>
                    </div><!-- .entry-utility -->
                </div><!-- #post-## -->

<?php endwhile; ?>
<?php else : ?>
    <h1 class="page-title">There are no posts for this date.</h1>
<?php endif; ?>

            </div><!-- #content -->
        </div><!-- #container -->

<?php get_sidebar(); ?>

此示例还可以处理“月”和“年”页面。

http://wptest.dev/2011/04/23/

SO网友:user9812

我可能在这里遗漏了一些东西,但您是否可以直接进入“设置”->“阅读”->“每页帖子”,并将其设置为3或1?(取决于每个新闻稿是单独发布还是全部发布在一个帖子中)。

如果您正在发布非新闻稿的其他帖子(即:可能您自己的类别中也有博客帖子),您还可以仅为新闻稿创建一个类别,然后创建一个自定义页面模板,并根据主题将循环替换为以下内容:

query_posts( array( \'cat\' => 33, \'posts_per_page\' => 3, \'paged\' => 
get_query_var(\'paged\') ) );
在本例中,“33”将是您的新闻稿所属的类别-您必须用实际的类别号替换它。然后,您只需在post editor窗口中创建一个页面,选择自定义页面模板,然后发布。

如果您担心底部的“旧帖子”或“新帖子”,您可能还想删除或调整主题模板文件中的导航链接。

SO网友:Milo

WordPress将自动生成每日档案。您可以使用wp_get_archives( ); 并通过array(\'type\' => \'daily\') 按天列出归档菜单。

如果你的主题没有存档。php模板,您可以创建一个,上面的页面将使用该模板。这个is_day() conditional将在每日存档页面上返回true,因此您可以分别设置这些页面的样式。

结束

相关推荐

在调用Query_Posts()之后使用wp_list_ages()

可能我只是做错了,所以请随时告诉我您将如何解决此问题。我有一个主要基于页面的网站,但也有一些“页面”,其中我的内容来自自定义query_posts() 呼叫在所有这些页面中,我希望能够使用wp_list_pages() 生成子导航。当我在一个普通页面上时,这很好用,但当我在一个query_posts() 内容,这根本不起作用。这里有一个我所说的“页面”的例子。这是一个主题文件,名为page-media.php:<?php get_header(); ?> <?php q