ホームページ >ウェブフロントエンド >jsチュートリアル >WordPressシングルページの前ページと次ページを実装する方法【コード付き】_javascriptスキル
WordPress の記事ページには前と次の記事を実装する関数がありますが、previous_post_link() 関数と next_post_link() 関数は 1 つのページ page.php に実装したいと考えています。これは私のニーズを完全に満たしていたので、自分で関数を書いて実装しました。
このページには階層機能があり、次のようなメニュー順序でソートされたサブページ間に前と次のリンクがあることが必要です。
---- 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: 次の記事のリンク テキスト。空の場合、デフォルトでページ タイトルになります。
例: 一般的なテーマは、page.php のループ内に呼び出しコードを挿入することです (わかりませんが、the_content(); のすぐ下にあります)
最初の記事や最後の記事の場合は空白が表示されますが、判定を加えることで空白を埋めることができます
9ec8dba98d3677c7f01f3d490bbf16ae
37e31a5c408bfbcb21b99aee0ae3e8a2
テストの結果、同じカテゴリーの記事は表示されますが、最初の記事と最後の記事には「すでに最後の記事です」「すでに最後の記事です」という対応するプロンプトメッセージが表示されません。 get_previous_post() 関数で記事のカテゴリ ID を指定している限り、コードは完全に機能します。
完全なコードは次のとおりです: