Hola,
Tu funcion GetPosts() solo devuelve un registro, el primero, lo que devuelve mysql_fetch_array(). Si lo que quieres es que devuelva un array con todos los registros, tienes que hacer el while e ir añadiendolo en un array:
Código PHP:
Function GetPosts($link)
{
$posts=array();
$sql = "SELECT * FROM posts WHERE status='1' ORDER BY created_on DESC LIMIT 0,10";
$query = mysql_query($sql,$link);
echo $error;
while ($post = mysql_fetch_array($query)) {
$posts[]=$post;
}
Return $posts;
}
Despues recorres el array devuelto con foreach.
Saludos.