ちょっと私は私のlocalhostセットアップでこのエラーメッセージを得るが、それはGenesis Frameworkが有効になっているときにだけ。 WordPressのTwenty Elevenは正常に動作します。これは私が新しい投稿を作成したいときに起こります。ページを更新するとエラーが繰り返されますが、投稿自体が作成され、すべてうまくいくようです。
誰がこれを引き起こすのか知っていますか?
Notice: Undefined offset: 0 in /var/www/secret/htdocs/wp-includes/capabilities.php on line 1067
Notice: Undefined offset: 0 in /var/www/secret/htdocs/wp-includes/capabilities.php on line 1067
Warning: Cannot modify header information - headers already sent by (output started at /var/www/secret/htdocs/wp-includes/capabilities.php:1067) in /var/www/secret/htdocs/wp-includes/pluggable.php on line 876
新しくインストールされた、変更されていないGenesis Frameworkです。
あなたのXdebugスタックトレースは、 genesis_save_custom_fields()
を単数の機能(edit_postとedit_page)で呼び出すcurrent_user_can()
関数として犯人を指名します。
current_user_can()
はhas_cap()
を呼び出し、これは map_meta_cap()
を呼び出します。これはケーパビリティ名のswitchステートメントを実行します。 capabilities.phpの 行1067を参照してください 。 2つの未定義のオフセット通知は$ args [0]からのものです。これは、Post IDがGenesisのcurrent_user_can呼び出しに含まれていないため、配列ではありません。
Cannot modify header information - headers already sent
警告はXdebugからのPHP通知の出力です。実際にXdebugを使用していない場合は、ログを確認しない限りPHP通知は表示されません。エラーはsave_postに添付された関数にあり、ページが更新されるためWP_DEBUGをtrueに設定してもページに表示されない。
Lib/functions/options.phpの234行目で、次のように変更されます。
/** Check the user allowed to edit the post or page */
if ( ( 'page' == $post->post_type && ! current_user_can( 'edit_page' ) ) || ! current_user_can( 'edit_post' ) )
return;
に:
/** Check the user allowed to edit the post or page */
if ( ! current_user_can( 'edit_post', $post->ID ) )
return;
edit_page
とedit_post
のキャップは互換性があるため、post_typeをチェックする必要もありません。
これは、Mark Jaquithによる監査で1.17にトランクで修正されました。 1.9.2リリースのチケットを提出しました。
個人的には、map_meta_cap()は$ args [0]をチェックまたはサニタイズしないので、これはWordPressの問題であると思います。そのため、私は ticket をWordPressコアに送信しました。