Этот код, кажется, нужно поместить внутрь функции. А саму функцию вызывать до того, как движок отправит заголовки клиенту. Вот так:
function custom_login() {
$user['user_login'] = $_POST['log'];
$user['user_password'] = $_POST['pwd'];
$user['remember'] = true;
$signon = wp_signon($user, false);
if (is_wp_error($signon)) echo $signon->get_error_message();
//print_r($signon);
}
add_action( 'after_setup_theme', 'custom_login' );
Потому что wp_signon ещё кажется куки какие-то создаёт в процессе. Так что она должна вызываться до момента, когда всё это отправляется клиенту. А у вас код наверняка где-нибудь прямо в шаблоне прописан, когда уже поздно вызывать wp_signon.