web-dev-qa-db-ja.com

空の親コンテンツを持つ階層ページを処理するための戦略

次のようなページ構造があるとします。

/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. URLで階層構造を許可する
  2. メニューで階層構造を許可する

しかし問題の1つは、ユーザーが「 /about-us 」と入力すると、コンテンツが含まれていない空白のページが表示されることです。

それで、私はデフォルトで " /about-us/history "と言うようにユーザーを自動転送するべきですか?

それとも、階層ページを処理する一般的な方法はありますか?

3
Yoga

私はここで二つの戦略を使っています...

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

4
Butuzov

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が表示されます。

新しいテンプレートを使用して親メニューを保存すると、親ページに直接アクセスしようとするたびに、最初の子ページにリダイレクトされます。