WordPress 기사 페이지에는 이전 기사와 다음 기사를 구현하는 기능이 있습니다. 그러나 우리는 단일 페이지에서 이전 페이지와 다음 페이지 기능을 구현하려고 합니다. 그것은 내 요구 사항을 완전히 충족했기 때문에 그것을 구현하기 위해 함수를 직접 작성했습니다.
페이지에는 계층적 기능이 있습니다. 요구 사항은 다음과 같이 메뉴 순서에 따라 정렬된 하위 페이지 사이에 이전 및 다음 링크가 있어야 한다는 것입니다.
---- zBench(하위 페이지 1)
---- zBorder(하위 페이지 2)
---- zSofa(하위 페이지 3)
把下面函数代码放入 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); }
[기능]
subpage_nav_link($prevText, $nextText)
[매개변수]
$prevText: 이전 기사에 대한 링크 텍스트입니다. 비어 있는 경우 기본값은 페이지 제목입니다.
$nextText: 비어 있으면 페이지 제목이 기본값으로 설정됩니다.
PS: $prevText 및 $nextText는 subpage_nav_link('oo %title xx', '')와 같은 문자 조합도 지원합니다. 이 경우 이전 기사 링크 기사는 "oo 페이지 이름 xx"가 됩니다.
또 다른 실용적인 글: 같은 카테고리의 이전/다음 글을 불러오는 워드프레스 글 페이지 구현하기
기본적으로 직접 호출되는 코드
b587ef6a1b5015a855cf98f0b67c806d
4226ddd404c895cc9e1c2d26a9fe74e6
771880bb4724340504295de0fde178ae
b1c9a806c516c5fab3041cddb9525c19
전체 코드는 다음과 같습니다.