Preheat the oven to 350°F (175°C) and line a muffin tin with cupcake liners.
In a medium bowl, whisk together the flour, baking powder, and salt. Set aside.
In a large mixing bowl, cream the softened butter and granulated sugar until light and fluffy, about 3-5 minutes.
Add the eggs one at a time, mixing well after each addition. Stir in the vanilla extract.
Gradually add the dry ingredients to the wet mixture, alternating with the whole milk. Begin and end with the flour mixture. Mix until just combined.
Fill each cupcake liner about two-thirds full with the batter. Bake in the preheated oven for 18-20 minutes or until a toothpick inserted in the center comes out clean. Remove from oven and let cool in the tin for 5 minutes, then transfer to a cooling rack to cool completely.
For the custard filling, in a saucepan, combine the whole milk, sugar, and cornstarch. Cook over medium heat, whisking constantly until it thickens and begins to bubble.
In a separate bowl, whisk the egg yolks. Gradually whisk in some of the hot milk mixture to temper the yolks, then return the entire mixture to the saucepan. Cook for an additional 2 minutes, stirring constantly. Remove from heat, and stir in the butter and vanilla extract. Pour into a bowl, cover with plastic wrap directly on the surface, and refrigerate until chilled.
For the ganache, heat the heavy cream in a saucepan until it begins to simmer. Pour it over the chocolate chips in a heatproof bowl and let sit for 2-3 minutes. Stir until smooth and glossy.
Once the cupcakes and custard filling have cooled, use a small knife or cupcake corer to remove a small amount of the center from each cupcake. Fill each cupcake with the chilled custard, using a piping bag or a spoon.
Drizzle or dip the filled cupcakes into the chocolate ganache. Let the ganache set for a few minutes.