サポート » 使い方全般 » 固定ページにてGETパラメータを用いた際のカスタムパーマリンク

  • お世話になっております。

    固定ページにてコンテンツを作成し、GETパラメータにて表示の分岐を行っております。

    index.php?p=xx&title_id=yyyyy ※xxは固定ページのpost_id

    というURLを

    title/yyyyy.html

    と表示させたいのですが、functions.phpに

    add_rewrite_rule(‘title/([^/]+)/?$’ , ‘index.php?p=xx&title_id=$matches[1]’,’top’);

    こちらのリライトルールを追加したのですが、動作いたしません。
    なお、get_option(‘rewrite_rules’)にてルール自体が追加されていることは確認しております。

    お知恵を拝借できませんでしょうか。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちわ、tsutushi0628さん

    WordPress 側でパラメーターを認識できていないのではないでしょうか?
    以下をお使いのテーマの functions.php に追加してみてください。

    function my_query_vars( $vars ) {
        $array = array( 'title_id' );
        return array_merge( $array, $vars );
    }
    add_filter( 'query_vars', 'my_query_vars' );

    複数オリジナルのパラメーターを追加したい場合は、array( ‘title_id’ ) の部分を array( ‘title_id’, ‘hoge’, ‘fuga’ ) みたいにしてみてください。

    トピック投稿者 tsutushi0628

    (@tsutushi0628)

    KUCKLUさま

    お世話になっております。
    早速のご返信ありがとうございます。

    ご提示頂いたコードを追加いたしましたが、GETパラメータは取得できない状態です。
    動き的に index.php?p=xx この部分までは動作しているようなのですが…

    もし更にアドバイス・ヒントなどがございましたら、恐縮ではありますが
    頂戴できますと幸いです。

    tsutushi0628さん

    思ったのですが
    設定されているリライトルールでは、post id がxxのページまたはポストにリダイレクトされますよ…
    具体的に、これはどういった事されたいのか、少々イメージがつかめていないのですが…

    //スラッグ名からidを取得
    $id = get_page_by_path( 'sample-page' );
    //idからURLを取得し、URLパラメーターを付けたURLを出力
    echo esc_url( add_query_arg( array('title_id' => '1234'), get_permalink( $id ) ) );
    // URLパラメーターのtitle_idの値を主力
    echo esc_html( get_query_var( 'title_id' ) );

    とすれば、URLパラメーターは付きます。

    トピック投稿者 tsutushi0628

    (@tsutushi0628)

    KUCKLUさま

    ご返信ありがとうざいます。

    >設定されているリライトルールでは、post id がxxのページまたはポストにリダイレクトされますよ…

    上記で問題ありません。
    post_id=xxのページは固定ページでございまして、その固定ページにGETパラメータを渡してやりたいのです。
    取得したGETパラメータにより、PHPで内部処理を行い、画面の見せ方を変えるという使い方を想定してます。

    ご指摘の通り、確かにリダイレクトされてしまいます。
    これをなんとか、リライトできるように設定したいのですが…

    tsutushi0628さん

    ただGETパラメーターを渡したいだけでしたら…リライトルールを追加する必要がないと思います。そもそもリンクはクリックとかでアクセスしてくると思うので…。
    質問の答えとしては、一応、こちらで実現できると思います。
    こちらのコードは追加しておいてください。
    add_rewrite_rule('(title)/([^/]*).html/?$','index.php?page_id=xxx&title_id=$matches[2]','top');
    あとは、固定ページで
    esc_html( get_query_var( 'title_id' ) );
    を echo するなり変数に代入していただければと思います。

    ただ単純にGETパラメーターを取得したいのでしたら、こちらでご提示させていただいたコードを functions.php に追加し、こちらでご提示させていただいたコードでパラメーター付きのURLを生成しリンクさせて、あとは、固定ページのテンプレートファイルで get_query_var 関数を使って値を取得してあげれば実現は出来ると思いのですが…

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「固定ページにてGETパラメータを用いた際のカスタムパーマリンク」には新たに返信することはできません。