wp-config.php に次の 一文を追加してみてください。
define( 'WP_DEBUG', true );
※ WP_DEBUG という項目が既にあり、false と指定されている場合は true に変更してみてください。
すると、どういったエラーが起きているのか表示されるはずです。
( 右クリック → ソースを表示で念入りに見てみてください )
そのエラー文を教えて貰えればと思います。
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 していた為でした。
すみません。
今後はデフォルトテーマでテストします。
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
とてもよくわかりました。
add_query_arg()の、2パラメタめとして、もとのURLを指定したということですね?
長々とお付き合いいただき、本当にありがとうございました。
とても勉強になりました。