Minha lista não está aparecendo por ordem de ID, isso aconteceu logo depois do inner join (ou pode ser que eu esteja enganado).
function listaProdutos($conexao) {
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto = mysqli_fetch_assoc($resultado)) {
array_push($produtos, $produto);
}
return $produtos;
}