Чтобы убрать лишние <p> и <br> вокруг шорткодов, добавляем куда надо следующий код


remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

Подсмотрено тут: WordPress: Лишние теги вокруг шорткодов | GRAYSTONE

Опубликовано в рамках программы “Антисклероз”.