サポート » 使い方全般 » 固定ページのパーマリンクのカスタマイズ

  • 解決済 katz01

    (@katz01)



    固定ページのパーマリンク構造を親子関係を無視して、下記のようにしたいです。

    http://examle.com/test.html

    これを実装するために下記コードをfunction.phpに記述しました。

    function my_init() {
        global $wp_rewrite;
        $wp_rewrite->page_structure = $wp_rewrite->root . '%pagename%.html';
        flush_rewrite_rules( false );
    }
    add_action( 'init', 'my_init' );

    このコードでは最下層の固定ページはうまく機能するのですが、親子関係をもたせた固定ページの場合は下記のようなURL構造になってしまいます。

    【親ページのパーマリンク】・・・parent
    【子ページのパーマリンク】・・・child

    http://example.com/parent/child.html

    これを、

    http://example.com/child.html

    というように親ディレクトリを削除して表示させる方法がわからず、知恵をお貸しいただけますと幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 結論から言うと、かなり大規模な変更が必要だと思います。
    かなり大規模な変更かつ気を遣う場面が多いので、あまりオススメはしたくないですね。

    %pagename% というリライトタグは、parent/child に変換されるので、コレの挙動を変更する必要があります。 request アクションあたりでしょうか。

    get_permalink 等で固定ページのパーマリンクが出力されますが、コレをフィルターフックを用いて書き換える必要がまずあります。 page_link, get_page_uri 等でしょうか。

    また、WordPressの固定ページのスラッグは、通常ユニークになりますが、親ページが違う場合、それは適用されなくなります。ですが、親ページのスラッグを消そうとする場合、その機能を頑張って復活させる必要もあるかと思います。wp_unique_post_slug あたりですかね。

    余談ですが、flush_rewrite_rules はリライトルールのキャッシュを削除し毎回、再生成するモノなので、init フックで実行してはいけません。

    関数リファレンス/flush rewrite rules – WordPress Codex 日本語版

    katz01

    (@katz01)

    Toro_Unit 様

    ご回答いただき、ありがとうございます。
    大規模な変更が必要なのですね。。。
    プラグインを使って手動で一つずつ書き換えも視野にいれたほうが良さそうですね。

    また、コードの不備のご指摘までして頂き、感謝いたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「固定ページのパーマリンクのカスタマイズ」には新たに返信することはできません。