人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ワードプレスの固定ページの親子関係のURLを下記のようにしたいです。

aaa/index.html
aaa/page01.html
aaa/page02.html
bbb/index.html
ccc/index.html
ccc/page01.html

上記URLの実現は可能でしょうか。
可能な場合、実現方法のソースorプラグインのご紹介をお願い致します。

プラグインの【.html on PAGES】を入れる事で、

aaa.html
aaa/page01.html
aaa/page02.html
bbb.html
ccc/index.html
ccc/page01.html

とする事は出来ました。が、ディレクトリトップにindex.htmlを置く事が出来ません。
固定ページ投稿ページのスラッグにスラッシュを入れて入力しても
自動で省かれてしまいます。


●質問者: akide
●カテゴリ:ウェブ制作
✍キーワード:AAA CCC HTML INDEX ON
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
●60ポイント

ナビゲーションメニューを利用する方法ですので、WordPress 3.0以上が対象です。(プラグインは使用しません。)


1.パーマリンク設定の変更します。

ダッシュボードの「設定」→「パーマリンク設定」で「月と投稿名」などどれでもいいので、「デフォルト」以外を選択してから「変更を保存」で設定を変更します。


2.「.htaccess」を変更します。

次の行より上に「RewriteRule ^(.+?)/(.+?)\.html$ /wp-blog/index.php/$1-$2/ [L]」を記述します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp-blog/index.php [L]

・変更後


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp-blog/
RewriteRule ^index\.php$ - [L]
RewriteRule ^(.+?)/(.+?)\.html$ /wp-blog/index.php/$1-$2/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp-blog/index.php [L]
</IfModule>

# END WordPress



3.「/wp-includes/nav-menu-template.php」を編集します。(※約192行目)

// ここから追加
foreach( $menu_items as $key => $menu_item ) {
if(preg_match('#[^/]+?(-+?)[^/]+?/$#', $menu_item->url, $arr, 0 , 30←この数値は環境に合わせて変更します) ) {
$menu_item->url = preg_replace('#([^/]+?)-+?([^/]+?)/$#', '$1/$2.html', $menu_item->url);
}
}

// ここまで追加
// Set up the $menu_item variables
_wp_menu_item_classes_by_context( $menu_items );

※上記一箇所変更する必要があります。

※WordPressを設置したURLの文字数を指定します。(http://から数える)

(例えば、「http://www.example.jp/blog/」なら「27」を指定します。)



4.「/wp-includes/canonical.php」を編集します。(約367行目)

if ( $do_redirect ) {
// protect against chained redirects
if ( !redirect_canonical($redirect_url, false) ) {
// 次から2行をコメントアウト
//wp_redirect($redirect_url, 301);
//exit();
} else {



これで準備は完了です。

※ナビゲーションメニューを利用せず、テンプレートにメニューのHTMLを直接記述する場合は、1と2の手順のみを行ってください。


次はナビゲーションメニューを利用する場合も、テンプレートに直接メニューを記述する場合も共通の作業です。


『固定ページ作成時の注意点』

1.固定ページの作成時にパーマリンクと編集ボタンが表示されたら、次のように「親フォルダ名-(ハイフン)ページ名」の関係になるように、入力して「OK」を押します。

パーマリンク: http://www.example.jp/blog/service-index/

2.ページ属性で親は「親なし」のまま変更しないでください。


※ナビゲーションメニューは、ダッシュボードの「外観」→「メニュー」でカスタムメニューを作成して、「テーマの場所」のメインメニューに作成したカスタムメニューを選択して保存すると、ナビゲーションメニューに対応したメニューで表示されます。

・カスタムメニューの作成方法

http://wordpress.siyouyo.com/dash/gaikan/1973/


http://wpdocs.sourceforge.jp/Appearance_Menus_SubPanel

http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%9...


※何か不明な点がある場合は、コメント欄を開けてくださるとやり取りしやすいです。

◎質問者からの返答

詳細ご説明ありがとうございます。

せっかく頂いたご説明ですが、RewriteEngineでつまずいています。

具体的には、URLの書き換えが出来ません。

頂いたご説明では

「RewriteRule ^(.+?)/(.+?)\.html$ /wp-blog/index.php/$1-$2/ [L]」

となっていますが、「service/index.html」にアクセスしても「/service-index」を

読み込まず、404エラーになります。

RewriteRuleを私なりに

「RewriteRule ([0-9A-Za-z]+)/index\.html$ /wp/$1-index [L]」と

しましたが、やはり404エラーになります。

解決策はどちらにありますか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ