Ведь тут указывается только название функции, а мне нужно передать внешние параметры туда.
Тут можно указывать не только название функции, но передавать любой callable.
Например, сюда вы можете поместить анонимную функцию, которая соберет необходимые параметры и вызовет вашу именованную:
while ($row = mysqli_fetch_row($result)) {
$pricearray = json_decode($row[17], true);
$price = $pricearray['custprice'];
add_shortcode('insert_room_price_'.$row[0], function() use ($price) {
return funcshort($price);
});
}