WordPress文章中增加上一篇、下一篇

如何在文章內頁當中上一篇、下一篇鏈接,顯示特定的分類下的上一篇、下一篇,以及利用add_filter隨心所欲地在文章開頭或者結尾添加內容。

一、 一般的添加上一篇、下一篇鏈接方法
1、這個方法幾乎在所有的Wordpress主題中都可以看得到。一般是在Single.php文件中文章內容下方添加以下代碼即可,如果你沒有這個功能,可以自己添加。如下:

<?php previous_post_link(‘上一篇: %link’) ?>
<?php next_post_link(‘下一篇: %link’) ?>

2、這樣添加的話,有一個非常大的問題就是如果是第一篇文章,或者是最後一篇文章,會出現上一篇,或者下一篇空白。

二、填補空白添加上一篇、下一篇鏈接方法

1、解决上面的問題,自然是添加一個判斷輸出了else,當出現沒有上一篇或者下一篇時,就顯示一句話,如下:

<?php if (get_previous_post()) { previous_post_link(‘上一篇: %link’);} else {echo “沒有了,已經是最後文章";} ?>

<?php if (get_next_post()) { next_post_link(‘下一篇: %link’);} else {echo “沒有了,已經是最新文章";} ?>

三、顯示同分類下的上一篇、下一篇鏈接方法

1、要想很好的理解這一原理,先來學習一下Wordpress的上一篇、下一篇的函數格式:

<?php previous_post_link($format, $link, $in_same_cat = false, $excluded_categories = “); ?>

<?php next_post_link($format, $in_same_cat = false, $excluded_categories = “); ?>

2、相關說明如下:
$format:格式化被顯示的字符串,缺省值是”‘« %link”,第二個函數缺省值是”%link »”。

$link:被顯示的字符串,缺省值是上一篇或下一篇的”$title”,也可以設置为其它你想顯示的字符串。

$in_same_cat :表示是顯式同一類別下的文章還是不區分類別的文章,缺省值false表示不區分類別,只以發帖的時間先後來確定。

$excluded_categories:表示在顯示上一篇或下一篇時是否排除掉某分類,缺省不排除,如果排除,把分類ID列在此處,以英文逗號分隔。

3、於是相信大家都看出來了,實現同分類下的上一篇、下一篇鏈接,只要在上面的基礎上添加一個判斷:true,當同分類下存在文章時就顯示出來。代碼如下:

<?php if (get_previous_post()) { previous_post_link(‘上一篇: %link’,’%title’,true);} else { echo “沒有了,已經是最後文章";} ?>

<?php if (get_next_post()) { next_post_link(‘上一篇: %link’,’%title’,true);} else { echo “沒有了,已經是最新文章";} ?>

4、但是這裏也有一個問題就是當指定了同分類下的上一篇、下一篇時,會依然顯示空白,而不是輸出代碼中的“已經是最後文章”,所以我們還需要给特定的分類下指定ID就行了。代碼如下:

<?php
$categories = get_the_category();
$categoryIDS = array();
foreach ($categories as $category) {
array_push($categoryIDS, $category->term_id);
}
$categoryIDS = implode(“,", $categoryIDS);
?>
<?php if (get_previous_post($categoryIDS)) { previous_post_link(‘上一篇: %link’,’%title’,true);} else { echo “沒有了,已經是最後文章";} ?>
<?php if (get_next_post($categoryIDS)) { next_post_link(‘上一篇: %link’,’%title’,true);} else { echo “沒有了,已經是最新文章";} ?>

四、添加同分類下的上一篇、下一篇鏈接代碼

1、一般地如果你想在文章前面添加上一篇、下一篇,就找到Single.php文件中的<?php if (have_posts()) : while (have_posts()) : the_post(); ?>,緊臨其後添加。

2、利用add_filter添加。先來學習一個add_filter吧:
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>

3、参數說明如下:
$tag:$function_to_add 要HOOK的過滤器名稱,默認是無。
$function_to_add:當過慮器應用時調用的函數名稱,默認是無。
$priority:權重,多個add_filter存在時可以在這裏决定優先級,默認是:10.
$accepted_args:函數可以接受的文檔數目。默認是:1.

4、搞定了上面的,那麼直接上函數,自己定義一個函數名稱,然後利用add_filter執行,這裏有一個好處就是當你的Wordpress存在多個add_filter時,你可以用優先級來决定優先關系。這樣你添加的上一篇、下一篇鏈接可以保證在緊臨文章後面。



來訪數: (1281)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *