Ovviamente ti scrive tutte le pagine perché il ciclo lo fai così
for($i = 1; $i <= $tot_pages; $i++)
ovvero parti da 1 e continui fino al numero totale delle pagine.
Dovresti invece distinguere diversi casi, ovvero:
- se sei nelle prime 4 pagine:
for($i=1; $i<8; $i++)
che ti stampa da 1 a 7
- dalla 5° in poi:
for($i=$current_page - 2; $i<$current_page+5; $i++)
che ti stampa da 2 pagine prima di quella attuale fino a 4 successive (in totale 7)
- se sei nelle ultime 4 pagine:
for($i=$tot_pages - 6; $i<=$tot_pages; $i++)
che ti stampa sempre le ultime 7 pagine
Ovviamente questo considera che ci siano almeno 7 pagine.
Ho scritto al volo senza provare nulla, ma la logica dovrebbe esserci.