Você encontrou um bug no Gênesis.
Seus dedos de rastreamento de pilha Xdebug são os culpados como a função genesis_save_custom_fields()
que chama current_user_can()
com uma capacidade única ( edit_post e edit_page) que também requer um argumento adicional, neste caso o ID do post que está faltando.
current_user_can()
chamadas has_cap()
que chama map_meta_cap()
que faz uma instrução switch no nome da capacidade. Veja a linha 1067 de capabilities.php . Os 2 avisos de offset indefinidos são de $ args [0] que não é um array porque o ID do post está faltando na chamada current_user_can no Genesis.
O aviso Cannot modify header information - headers already sent
é do Xdebug que imprime os avisos do PHP. De fato, se você não estivesse usando o Xdebug, nem sequer veria os avisos do PHP, a menos que tenha verificado seus logs porque o erro está em uma função anexada a save_post e a página é atualizada, o que impede que avisos / erros sejam exibidos na página. mesmo com WP_DEBUG definido como verdadeiro.
Correção:
Na linha 234 da lib / functions / options.php altere:
/** 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;
Para:
/** Check the user allowed to edit the post or page */
if ( ! current_user_can( 'edit_post', $post->ID ) )
return;
Observe também que não há necessidade de verificar o post_type porque os limites edit_page
e edit_post
são intercambiáveis.