Después de hacer pruebas como loco, encontré el problema.
 
Object_query es un método que tengo en la clase Connect. 
Al utilizar en ese método $this->result se quedaba almacenado el array anterior y por eso unía ambos arrays que no tenían nada que ver. 
Pero eso no tendría que suceder, puesto que estoy trabajando la clase con patrón singleton. 
Dejo la clase y cómo la instancia para que alguien pueda decirme qué está sucediendo, ya que en teoría eso en el futuro me podría dar más errores por agotar la conexiones a la BD :S    
Código PHP:
Ver original/*
 *   CLASE PARA CONECTAR Y REALIZAR OPERACIONES EN LA BASE DE DATOS
 */
class Connect{
    private $IDConexion;
    private $Escapestr;
    private $IDQuery;
        
        //para trabajar la clase con patron de diseño singleton
        private static $instance;
    
    private function __construct(){
        //establezco los datos de autenticación para acceder a la base de datos
        $conexion = mysqli_connect("server", "user" , "password" , "database");         
        //establezco el conjunto de caracteres a nivel de servidor en tiempo de ejecucion
        
        $this->IDQuery = $conexion;
        
        return $this->IDQuery;
    }
        
        //para trabajar la clase con patron de diseño singleton
        public static function Instance(){
            if(self::$instance == NULL){
                self::$instance = new Connect();
            }
            return self::$instance;
        }
    
    public function Escape( $string_escapar ){
        //escapo caracteres para evitar sql injection
        $string_escapar = trim( $string_escapar );         
         $this->Escapestr = $escape;
        
        return $this->Escapestr;
    }
    
    public function Connect ( $string_consulta ){
        //comprueba si se ha creado la conexion
        if(!$this->IDQuery)
        {
        }
        //conecta a la base de datos
        
                
                
        return $this->IDConsulta;
    }
        
    public function Go_out (){
    }
        
        
        /*
         * procesa el resultset de la consulta
         * (devuelve un array indexado)
         */
        public  function Object_query($conexion){
 
                    $result[] = $value;
                }
            }
            else{
                $result   = FALSE;
            }
 
            return  $result;
        }
}
  
El método que recoge todas las subcategorias instancia así la clase connect    
Código PHP:
Ver original/*
     * obtiene todas las subcategories
     */
    public function read_subcategories(){
        $this->sql  = "SELECT * FROM subcategories";
        
        $this->conexion = Connect::Instance()->connect($this->sql);
        
        $this->result   = Connect::Instance()->Object_query($this->conexion);
        
        return $this->result;
    }
  
y así el método que recoge un post determinado    
Código PHP:
Ver original/*
     * selecciona un post por su id
     */
    public function read_post($idpost){
        $this->idpost   = Connect::Instance()->Escape($idpost);
        
        $this->sql      = "SELECT * FROM posts WHERE idpost= $this->idpost";
        
        $this->conexion = Connect::Instance()->connect($this->sql);
        
        $this->result   = Connect::Instance()->Object_query($this->conexion);
        
        return $this->result;
    }