質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4355閲覧

Notice: Trying to get property '〜' of non-objectのメッセージを消したいです

poppos

総合スコア9

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/08/19 05:40

編集2018/08/19 08:23

はじめまして。popposと申します。wordpressでサイトをカスタマイズし始めたばかりのもので、初歩的な質問ばかりになってしまうと思いますが、よろしくお願いいたします。

wordpressでサイトをカスタマイズ中、noticeのメッセージが表示されるようになりました。また、管理画面のメニューが使えなくなってしまいました。

メッセージを非表示にするのではなく、おかしいところを直して、もとの表示に戻したいです。

メッセージが表示される場所は以下の通りです。
・トップページ
・全ての固定ページ、投稿ページ、カスタム投稿ページ
・wordpress管理画面の「外観>メニュー」を表示した時。(普段のメニュー設定画面は全く表示されずに、メッセージが表示されます。)

直前に行っていたのはWP-Optimizeというプラグインを有効化させて、最適化させる作業です。

コードは全く意味が読み取れないので、具体的に、どこをどのように書き換える、ということを教えていただけると大変助かります。

以下に示した「該当のソースコード」はnav-menus.phpです。780行目から786行目まで書きました。

発生している問題・エラーメッセージ

Notice: Trying to get property 'post_title' of non-object in "url" on line 780 Notice: Trying to get property 'ID' of non-object in "url" on line 780 Notice: Trying to get property 'ID' of non-object in "url" on line 785

該当のソースコード

PHP

1 2$original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID ); 3if ( '' === $original_title ) { 4/* translators: %d: ID of a post */ 5$original_title = sprintf( __( '#%d (no title)' ), $original_object->ID ); 6} 7

試したこと

・BackWPupのプラグインを使ってバックアップをもとに復元させました。
・WP-Optimizeのプラグインを停止してみました。

補足情報(FW/ツールのバージョンなど)

PHP 7.2.8 (CGI版)
WordPress 4.9.8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

本質的には参照不能なデータを渡さないもしくは渡す前にチェックするのが賢明。
エラー(実際にはnotice)を消したいだけならとりあえずerror_reportingの
エラーレベルを下げればよいでしょう。
今回の場合だとapply_filtersのみをターゲットにするなら
apply_filtersを呼び出す前にNOTICEをエラーレベルから排除して、呼び出し終わった時点で
もとに戻すというのが有効かと。(あくまでも姑息な処理です)

PHP

1$err=error_reporting(E_ALL^E_NOTICE); 2/* 3すべてのエラーを表示する設定からnoticeを弾く 4ただしデフォルト値をとっておく 5*/ 6print 1; 7hoge(); // エラー(notice)は出ない 8error_reporting($err); // デフォルト値をつかってエラーレベルをもとに戻す 9 10print 2; 11hoge();// エラー(notice)が出る 12 13function hoge(){ 14 print $var; 15}

投稿2018/08/20 01:10

yambejp

総合スコア114574

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poppos

2018/08/20 07:44

yambejpさま、丁寧なご回答をありがとうございます。 申し訳ありません。ご回答いただいた内容を一つ一つ検索で調べてみましたが、私の理解が追いつかず、再度ご回答等いただけると大変嬉しいです。 データを渡す、チェックする、という作業がどういうことを示しているのかわからなかったのですが、原因を特定するのは難しいということでしょうか。 またerror_reportingのエラーレベルを下げる、ということについては、今回のエラーメッセージについては非表示にする設定をする、という理解でよろしいでしょうか。もしそうであれば、書いていただいたコードをどこに貼り付ければ良いか、教えていただけると幸いです。 何卒よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問