WordPress-Artikelseiten verfügen über Funktionen zum Implementieren der vorherigen und nächsten Artikel. Wir möchten jedoch die Funktionen previous_post_link() und next_post_link() in einer einzelnen Seite implementieren. Es entsprach voll und ganz meinen Anforderungen, also habe ich die Funktion selbst geschrieben, um sie zu implementieren.
Die Seite hat eine hierarchische Funktion. Voraussetzung ist, dass zwischen den Unterseiten vorherige und nächste Links vorhanden sind, die nach Menüreihenfolge sortiert sind, wie zum Beispiel:
Themen (übergeordnete Seite)
---- zBench (untergeordnete Seite 1)
---- zBorder (untergeordnete Seite 2)
---- zSofa (untergeordnete Seite 3)
Wenn die aktuelle Seite zBorder ist, muss der vorherige Link zBench und der nächste Link zSofa sein.
把下面函数代码放入 functions.php(注:函数随手写的,可能不够精简) /** * get subpage previous/next page link by zwwooooo */ function subpage_nav_link($prevText='', $nextText='') { global $post; if ( !$post->post_parent ) return null; //如果不是子页面返回Null $args = array( 'sort_order' => 'ASC', 'sort_column' => 'menu_order', 'child_of' => $post->post_parent, 'post_type' => 'page' ); $pages = get_pages($args); $num = count($pages); $i = 0; $index = -1; foreach ($pages as $page) { if ($page->ID == $post->ID) { $index = $i; break; } ++$i; } if ($i == 0) { $prev = ''; $next = $pages[$index+1]; } elseif ($i == $num-1) { $prev = $pages[$index-1]; $next = ''; } else { $prev = $pages[$index-1]; $next = $pages[$index+1]; } if ($prev) { if ($prevText) { if ( substr_count($prevText, '%title') > 0 ) { $explode = explode('%title', $prevText); $prevText = $explode[0] . get_the_title($prev->ID) . $explode[1]; } } else { $prevText = get_the_title($prev->ID); } $prevlink = '<a class="previous-page-link" href="' . get_page_link($prev->ID). '">' . $prevText . '</a>'; } if ($next) { if ($nextText) { if ( substr_count($nextText, '%title') > 0 ) { $explode = explode('%title', $nextText); $nextText = $explode[0] . get_the_title($next->ID) . $explode[1]; } } else { $nextText = get_the_title($next->ID); } $nextlink = '<a class="next-page-link" href="' . get_page_link($next->ID). '">' . $nextText . '</a>'; } return array($prevlink, $nextlink); }
[Funktion]
subpage_nav_link($prevText, $nextText)
[Parameter]
$prevText: Linktext für den vorherigen Artikel. Wenn leer, ist der Standardwert der Seitentitel
$nextText: Linktext für den nächsten Artikel. Wenn er leer ist, wird standardmäßig der Seitentitel verwendet
PS: $prevText und $nextText unterstützen auch Zeichenkombinationen wie subpage_nav_link('oo %title xx', ''). In diesem Fall wird der vorherige Artikel-Link-Artikel zu "oo Seitenname xx"
Ein weiterer praktischer Artikel: Implementierung der WordPress-Artikelseite, um den vorherigen/nächsten Artikel in derselben Kategorie aufzurufen
Code wird standardmäßig direkt aufgerufen
Hier ist der vollständige Code: