###前提・知りたいこと
下記をheader.phpに書き、ホームを開きます。
すると「ホームだよ」が出力され「ホーム以外」は出力されません。
にも関わらず、「// ここでエラー」の部分でエラーが出力されます。
つまりホームだと判定しているのにも関わらず、elseのコードを読んでいるのです。
このエラーをなくす方法を知りたいです!
###該当のソースコード
<?php $url = explode( '/', rtrim($_SERVER['REQUEST_URI'], '/') ); if( is_home() || is_front_page() ){ echo 'ホ―ムだよ'; $user_id = get_current_user_id(); } else{ echo 'ホーム以外'; $user_id = get_user_by( 'slug', $url[2] )->ID; // ここでエラー }
###エラー
しかもこのエラー、3回出ます。なんなのでしょうか?
PHP Notice: Trying to get property 'ID' of non-object in /home/●●●●●●/example.com/public_html/wp-content/themes/world/header.php on line 70
###試したこと
よくわからんけど条件分岐が効かないなら、他の条件としてissetを追加してみました。それが下記ですが、やはり同じエラーです。
<?php $url = explode( '/', rtrim($_SERVER['REQUEST_URI'], '/') ); if( is_home() || is_front_page() ){ echo 'ホ―ムだよ'; $user_id = get_current_user_id(); } else{ echo 'ホーム以外'; if( isset($url[2]) ){ // 追加 $user_id = get_user_by( 'slug', $url[2] )->ID; // やはり同じエラー } }
そしてvar_dumpで見てみました。コメントアウトの通りの結果です。
var_dump($url); // array(1) { [0]=>string(0) ""} var_dump($user_id); // int(1)
このように配列の数は1つなのに、『isset($url[2])』の指定、つまり『配列の2つ目がある場合』の指定さえ無視して、エラーの行を読んでしまいます。
###試したこと2
特にquery_posts()は使ってないのですが、一応下記リセットを書いてみましたがダメでした。
<?php wp_reset_query(); /* 以下は同じ */
###試したこと3
さらに条件分岐に「REQUEST_URI」を加えてみましたが、これもダメでした。
if( is_home() || is_front_page() || $_SERVER["REQUEST_URI"] === "/" ){
かなり意味不明なのですが、エラーを消したいです。
どなたかアドバイスいただけませんでしょうか。
回答2件
あなたの回答
tips
プレビュー