簡體   English   中英

WordPress中的自定義博客存檔頁面

[英]Custom Blog Archive Page in WordPress

我想做的是有一個頁面,列出所有我的帖子,一次列出十個,分頁並從最新開始(第一頁顯示10個最新帖子,並帶有跳至下一個/最舊/等的鏈接。10帖子)。 我希望列表中的每個帖子都可以顯示:標題,日期,摘錄和“了解詳情”按鈕。 當然,這意味着要對div中每個已存檔的帖子進行樣式設置。 這是我在html原型中如何設置樣式的屏幕截圖:

https://plus.google.com/105168282869678130658/posts/hMxABrRqKDf

div的結構如下(CSS樣式很好用,所以我不會對此感到厭煩):

<div class="storyPreview">
   <h2>[TITLE OF POST]</h2>
   <p><em>[DATE OF POST]</em></p><br>
   <p>[EXCERPT FROM POST]</p><br>
   <a class="learnMore" href="[LINK TO POST HERE]">Learn More</a>
</div>

到目前為止,這是我的archive.php:

<?php
/*
Template Name: Archives
*/
?>

<?php get_header(); ?>

    <main role="main">
        <!-- section -->
        <section>

            <h1>News &amp; Blog Archive</h1>


        </section>
        <!-- /section -->
    </main>

<?php get_footer(); ?>

這可能嗎? 是否需要超精巧的PHP ninjitsu?

Wordpress可以在某種程度上為您做到這一點。 如果您真的想對其進行個性化設置,請連接到存儲帖子的數據庫(按您提到的日期排序),然后構建一個視圖模板,使用for循環為每個博客條目寫標題和摘要。

這是非常可行的,不需要成為PHP專家(我假設您至少具有一些基本的編程知識)。

讓我們從了解Wordpress如何生成頁面開始。 在您的情況下,您需要一個存檔。 您的archive.php頁面將查找創建單個帖子,在我的首選情況下,它將查找content.php文件以查找要吐出的內容。 您可以在此處查看有關層次結構的更多信息

因此,它將使用archive.php > content.php

存檔.php

<?php
/*
Template Name: Archives
*/
?>

<?php get_header(); ?>

    <main role="main">
        <section>
            <h1>News &amp; Blog Archive</h1>

            <?php if ( have_posts() ) :?>

                <?php while ( have_posts() ) : the_post();?>
                    <?php
                        get_template_part( 'content', get_post_format());
                    ?>
                <?php endwhile; ?>

            <?php else : ?>
                <?php get_template_part( 'no-results', 'archive' );?> 
            <?php endif; ?>
        </section>
    </main>

<?php get_footer(); ?>

我會解釋每個部分的作用

  • if ( have_posts() ):這檢查是否有要顯示的帖子。 如果沒有,它將顯示一個no-results.php頁面。
  • while ( have_posts() ) : the_post(); 這將遍歷您的所有帖子
  • get_template_part( 'content', get_post_format()); 顯示實際的帖子,檢查文件content.php
  • get_template_part( 'no-results', 'archive' ); 如果未找到任何帖子,則顯示no-results.php頁面。

因此,現在您有了archive.php尋找content.php

Content.php

您可能需要重新設置樣式,我使用了一篇文章(其中包含發布信息)來包裝div的外部。

<?php
/**
 * @package Generate
 */
?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> itemprop="blogPost" itemtype="http://schema.org/BlogPosting" itemscope="itemscope">
    <div class="storyPreview">
       <h2><?php the_title(); ?></h2>
       <p><?php the_time('jS F Y'); ?></p><br>
       <p><?php the_excerpt(); ?></p><br>
       <a class="learnMore" href="<?php the_permalink(); ?>">Learn More</a>
    </div>
</article>

應該更不言自明,但是我還是要解釋一下:

  • the_title()檢索並顯示您可能想將其包裝在文章鏈接中的文章標題。
  • the_time('jS F Y')以特定格式獲取時間。 您可以在此處了解如何更改格式
  • the_excerpt()顯示帖子的摘錄。 如果您使用的是自定義帖子類型,則可以定義要顯示的摘錄,否則將僅顯示帖子中特定位置的單詞。
  • the_permalink()這是您的帖子的生成鏈接。

我不能保證所有這些都會立即起作用,但是至少應該足以使您前進。

好吧,我一定找到了正確的搜索字詞,因為我發現了! 這是我在archive.php中使用的內容:

<main role="main">
    <?php $args = array(
    'numberposts'     => 10,
    'offset'          => 0,
    'orderby'         => 'post_date',
    'order'           => 'DESC',
    'post_type'       => 'post',
    'post_status'     => 'publish',
    'suppress_filters' => true ); ?>

    <?php $posts_array = get_posts( $args ); ?>
    <!-- section -->
    <section>

    <h1>News &amp; Blog Archive</h1>
        <?php if ($posts_array) : ?>

            <?php foreach ($posts_array as $post) :  setup_postdata($post); ?>
                <?php
                    get_template_part( 'content', get_post_format());
                ?>
            <?php endforeach; ?>
         <?php else : ?>
        <?php endif; ?>

        <?php next_posts_link('View Older Entries') ?>


    </section>
    <!-- /section -->
</main>

但是...還有最后一個問題,如果您知道的話,請隨時發表評論(否則,我確定最終會找到答案):next_posts_link不起作用; 沒有任何顯示。 我目前有11個帖子,因此應該可以使用另一個頁面,對嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM