web-dev-qa-db-ja.com

エラーメッセージが指しているときに自分のコードでエラーを見つける方法 WP コアファイル?

私のプラグインを4.5 RCのWordPressでテストしている間に、wp-config.phpでデバッグをオンにした後、私はcore WPファイルにエラーが表示されることに気づきました

Notice: Trying to get property of non-object in /wp-includes/post-template.php on line 289

除去の過程(メッセージが再び見つかるまで他のすべてのプラグインをオフにする)を通して、これは私のプラグインのオプションページが原因であると私は考えています(おそらくメインのカスタム投稿ページかもしれません)。どこに私を向けるのを助けるために。エラーはコアWPファイルを指しています。

このエラーは、プラグインのメインページ、ダッシュボード、ユーザー、コメント、外観、設定、およびオプションページ自体など、管理者のいたるところには表示されませんが、他の編集や投稿には表示されません。私のプラグインまたは投稿のページ、またはページの、またはサイトのメディア。

コアのその行のコードは

if ( false !== strpos( $post->post_content, '<!--noteaser-->' ) && ( ! $multipage || $page == 1 ) )

奇妙なことに、私のオプションページには、ポストコンテンツの関連性がなく、オプションしかないため、この関数(「get_the_content」の一部)が呼び出される理由が不明な点があります。そして、上記より具体的なエラーメッセージもMYコードの行を参照するエラーメッセージもないので、私のコードのどの部分がこれをやめさせることができるのか見つけるのに苦労しています。

誰かがこれをより良く解決する方法をお勧めできますか?より優れた、より具体的なエラー報告を持つツール、または問題を見つけて解決するためのものそれは単なる通知であり、致命的ではないことを私は知っていますが、可能であればそれを修正したいと思います。

ありがとう。

1
Stephen

私はこれを引き起こしている原因を考え出しました、しかし良いデバッグ情報がなかったのでそれは試行錯誤によるものでした。そして、エラーは私が以前に推測したようにオプションの中ではなく、私のプラグインのメイン(カスタムポストコール)の部分にありました。私は私が使用する必要があることがわかった

'content'  => $p->post_content

私のquery/foreachループの代わりに

'content'  => get_the_content($p->ID)

そして、元のデバッグのエラー行(289行目)が "get_the_content"(つまり私が使っていたもの)と呼ばれる関数で失敗していました。私のコードの行はデバッグで示されていました)。とにかく、これはグローバルな$ post変数がなければうまくいきません。それは他のあらゆる種類のコンテンツ問題を引き起こしました。しかし、(get_the_content関数を介さずに)直接コンテンツを取得するだけで、私の問題は解決しました。これが他の人に役立つことを願っています。

1
Stephen