次のようなページ構造があるとします。
/about-us (used as a parent holder only)
/about-us/history (real page)
/about-us/team (real page)
/about-us/industry (real page)
ページ " about-us "にはコンテンツがありませんが、2つの目的のために必要です
しかし問題の1つは、ユーザーが「 /about-us 」と入力すると、コンテンツが含まれていない空白のページが表示されることです。
それで、私はデフォルトで " /about-us/history "と言うようにユーザーを自動転送するべきですか?
それとも、階層ページを処理する一般的な方法はありますか?
私はここで二つの戦略を使っています...
1)最初の子への単純なリダイレクトです(メニュー順を使用)。page-redirect.php
<?php
/*
* Template Name: Redirector
* Description: Empty Holder (redirect page)
*/
$rp = new WP_Query(array(
'post_parent' => get_the_id(),
'post_type' => 'page',
'order' => 'asc',
'orderby' => 'menu_order'
));
if ($rp->have_posts())
while ( $rp->have_posts() ) {
$rp->the_post();
wp_redirect(get_permalink(get_the_id()));
exit;
}
wp_redirect(dirname(home_url($wp->request)));
exit;
2)子供たちへのリンクを持つ親のメニューを生成する(その例として - http://unu.edu/about )
page-parent.php
という名前の新しいファイルを作成し、新しいファイルに次のコードを入力します。
<?php
/*
* Template Name: Parent Menu
* Description: Redirects empty parent page to first child page
*/
# Parent menu goes to first child page
# askwpgirl.com/redirect-parent-page-first-child-page-wordpress
$child_page = get_pages( "child_of=" . $post->ID . "&sort_column=menu_order" );
if ( $child_page ) {
$parent_page = $child_page[0];
wp_redirect( get_permalink( $parent_page->ID ) );
}
次に、page-parent.php
を子テーマのルートディレクトリに配置します。次に例を示します。
/wp-content/themes/child-theme
その後、 Template オプションに新しいテンプレートParent Menu
が表示されます。
新しいテンプレートを使用して親メニューを保存すると、親ページに直接アクセスしようとするたびに、最初の子ページにリダイレクトされます。