Ok. Creo haber entendido cuál es tu problema.
En mi opinión, si quieres mantener la estructura que comentas yo utilizaría inputs del tipo hidden fuera del bucle foreach, y asignándoles el valor que viene del superarray $_GET, algo así:
Código PHP:
<form method="get" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<input type="hidden" name="option" value="<?php echo $_GET["option"];?>">
<input type="hidden" name="subcategories" value="<?php echo $_GET["subcategories"];?>">
<input type="hidden" name="page _subcategories" value="<?php echo $_GET["page _subcategories"];?>">
<?php
foreach($posts as $post){
?>
<button type="submit" name="option" value="<?php echo unblank($post['title']); ?>">
<article>
<header><?php echo substring($post['title'], 0, 50); ?></header>
<section><a href="index.php?option=categorie">leer</a></section>
<footer>Publicado el <?php echo $post['date_time'];?> Por <?php echo substring($post['author'], 0, 6); ?></footer>
</article>
</button>
<?php
}
?>
</form>
De esta manera, después de hacer submit mantendrás los valores en la URL utilizando el método GET y mantendrás la trazabilidad.
¿Es esto lo que querías conseguir?
Saludos.