你在《创世纪》中发现了一个bug
Xdebug堆栈将罪魁祸首追踪为
genesis_save_custom_fields()
调用的函数
current_user_can()
具有一个单独的功能(edit\\u post和edit\\u page),它还需要一个额外的参数,在本例中是缺少的post ID。
current_user_can()
呼叫has_cap()
哪个呼叫map_meta_cap()
它对功能名称执行switch语句。看见line 1067 of capabilities.php. 这两个未定义的偏移量通知来自$args[0],它不是一个数组,因为Genesis中当前的\\u user\\u can调用中缺少post id。
这个Cannot modify header information - headers already sent
警告来自Xdebug打印PHP通知。事实上,如果您没有使用Xdebug,除非您检查日志,否则您甚至看不到PHP通知,因为错误出现在附加的save\\u post函数中,并且页面被刷新,即使WP\\u DEBUG设置为true,也会阻止警告/通知/错误显示在页面上。
修复:lib/functions/options的第234行。php更改:
/** 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;
还要注意的是,不需要检查post\\u类型,因为
edit_page
和
edit_post
盖子可以互换。