Para hacer lo que quieres, te falta gestionar una variable : el número de páginas a mostrar en el paginador.
Estás intentando hacerlo sólo con $total_paginas.En la imagen de ejemplo que pones, $longitud_paginador=12.
Te pego aqui un trozo de código que tengo en producción, que te puede ayudar.Es javascript, pero adaptarlo a php es simple.
Código Javascript
:
Ver originalif(nPages < this.pagLength || this.currentPage < halfP)
{
if(nPages > this.pagLength)
ellipsis=true;
start=0;
}
else
{
if(this.currentPage+halfP>nPages)
start=Math.max(0,nPages-this.pagLength);
else
{
ellipsis=true;
start=Math.max(0,this.currentPage-Math.floor(this.pagLength/2));
}
}
currentPage es la página actual.
pagLength es la longitud del paginador.
nPages es el numero de paginas.
halfP es la longitud del paginador dividido entre dos.
ellipsis controla si hay que pintar "..." o no.
Con esto, tienes el estado inicial, antes de entrar en el bucle que crea cada uno de los links a páginas.