サポート » 使い方全般 » リンク先にGETパラメタを引き継ぎたい

  • 解決済 momo-sophia

    (@momo-sophia)


    トップページで与えられるGETパラメタを、他のページにも引き継ぎたいと考えています。

    投稿ページへのリンクは、the_permalinkの後にテキストを追加することで対応できたのですが、固定ページへのリンクはwp_nav_menuでメニュー生成されているのですが、引数に指定することも出来ず、どのように対応してよいかわかりません。
    アドバイスお願いします。

7件の返信を表示中 - 16 - 22件目 (全22件中)
  • wp-config.php に次の 一文を追加してみてください。

    define( 'WP_DEBUG', true );

    ※ WP_DEBUG という項目が既にあり、false と指定されている場合は true に変更してみてください。

    すると、どういったエラーが起きているのか表示されるはずです。
    ( 右クリック → ソースを表示で念入りに見てみてください )

    そのエラー文を教えて貰えればと思います。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    ishihara takashi様

    ありがとうございます!

    Fatal error:
    Cannot use object of type stdClass as array in ~functions.php on line 357

    エラーの箇所は、
    function my_wp_nav_menu( $output, $args ) {
    if( ! isset( $args[‘cms’] ) )  <<=ここ
    return $output;

    $param = esc_attr( $args[‘cms’] );
    return preg_replace(‘/href=”(.*?)”/’, ‘href=”‘ . add_query_arg( array( ‘cms’ => $param ), ‘$1’ ) . ‘”‘, $output);
    }

    function my_wp_nav_menu( $output, $args ) {
        if( ! isset( $args->cms ) )
            return $output;
    
        $param = esc_attr( $args->cms );
        return preg_replace('/href="(.*?)"/', 'href="' . add_query_arg( array( 'cms' => $param ), '$1' ) . '"', $output);
    }

    こちらに修正をお願いします。
    オブジェクトなのに配列として値を取ろうとしていた為に error がでていました。

    (あれ…テストした時大丈夫だった筈orz すみません)

    僕が最初にコードを提示した時に大丈夫だったのは、テストしたテーマが自分のオリジナルテーマで、既に wp_nav_menu を 少し hack していた為でした。

    すみません。

    今後はデフォルトテーマでテストします。

    トピック投稿者 momo-sophia

    (@momo-sophia)

    KUCKLU様

    ありがとうございます!
    パラメタを引き継ぐことができました。
    確認テストまでしていただいて、とても感謝しております。

    ひとつだけ。
    add_query_arg()という関数を調べたのですが、よくわからなくて、サンプルでいただいたソースの
    $1
    が何かを教えてください。

    add_query_arg()という関数を調べたのですが、よくわからなくて、サンプルでいただいたソースの
    $1
    が何かを教えてください。

    これは add_query_arg() は関係ないです。
    $1 は PHP 関数 preg_replace() でマッチした内容です。 マッチ条件は '/href="(.*?)"/' の部分です。$0 にはマッチ条件でマッチした全体、$1 は マッチ条件にグループを入れてるので ( 例の場合はURLに該当する部分 )、その1つ目のマッチグループが入ってます。
    上手く説明出来てる自信がないので、PHP のドキュメントもご覧ください。
    http://www.php.net/manual/ja/function.preg-replace.php

    トピック投稿者 momo-sophia

    (@momo-sophia)

    とてもよくわかりました。
    add_query_arg()の、2パラメタめとして、もとのURLを指定したということですね?

    長々とお付き合いいただき、本当にありがとうございました。
    とても勉強になりました。

7件の返信を表示中 - 16 - 22件目 (全22件中)
  • トピック「リンク先にGETパラメタを引き継ぎたい」には新たに返信することはできません。