[英]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 & Blog Archive</h1>
</section>
<!-- /section -->
</main>
<?php get_footer(); ?>
這可能嗎? 是否需要超精巧的PHP ninjitsu?
Wordpress可以在某種程度上為您做到這一點。 如果您真的想對其進行個性化設置,請連接到存儲帖子的數據庫(按您提到的日期排序),然后構建一個視圖模板,使用for循環為每個博客條目寫標題和摘要。
這是非常可行的,不需要成為PHP專家(我假設您至少具有一些基本的編程知識)。
讓我們從了解Wordpress如何生成頁面開始。 在您的情況下,您需要一個存檔。 您的archive.php頁面將查找創建單個帖子,在我的首選情況下,它將查找content.php文件以查找要吐出的內容。 您可以在此處查看有關層次結構的更多信息 。
因此,它將使用archive.php
> content.php
。
<?php
/*
Template Name: Archives
*/
?>
<?php get_header(); ?>
<main role="main">
<section>
<h1>News & 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
。
您可能需要重新設置樣式,我使用了一篇文章(其中包含發布信息)來包裝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 & 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.