(Edited from earlier partial answer, which gave $f(5) \ge 11$.)

We have $f(5) = 11$.

A short proof shows that $f(5) \ge 10$. To be 5-universal (*i.e.* universal for all partial orders of 5 elements), our poset must contain a 5-chain. Also it must contain two incomparable 2-chains, only one of which can be in the 5-chain. Also it must contain 5 incomparable elements (only two of which could be in the two chains). So at least 5+2+1+1+1 = 10 elements. I believe this is essentially the kind of lower-bound argument that was mentioned in the [earlier question][1]. This "multiple chains" argument says nothing about branching structures in the 5-posets, so perhaps one could consider them and work out an improved lower bound.

A really brute-force SageMath code (see below) tries all 10-posets (about 2.6 million) in about 15 hours, and finds no 5-universal posets, so this proves $f(5) \ge 11$.

Although the code is pretty slow, luckily with 11-posets it finds a solution in just 22 hours, having tried 1.0% of all approx. [47 million][2] 11-posets. The 11-poset with cover relation
[[0, 1], [0, 2], [1, 4], [1, 9], [2, 5], [2, 7], [2, 8],
 [3, 4], [3, 5], [3, 6], [4, 7], [4, 8], [5, 10], [7, 10],
 [8, 10], [9, 10]]
is 5-universal so we have $f(5) \le 11$.

[![picture][3]][3]

(Beware of bad layout, vertex 9 is not covered by 8, but by 10.)

**To go further** to $f(6)$, this code is probably not practical, mainly because Poset() generates the posets pretty slowly. In SageMath 8.8, it seems >90% of our computation time is spent there, and not in testing for universality. The best road forward is probably to use the C program by Brinkmann & McKay to generate the candidate posets. It should be lightning fast compared to Posets(), so then the bottleneck probably moves to the universality check. The B&M program can be found as an attachment to an [old enhancement request][4] for faster poset generation in SageMath. (Also McKay says in a comment here that he can send the code.)

    # Find an u-poset that contains all n-posets as induced posets.
    def find_universal_poset(n,u):
        PP = list(Posets(n))
        for U in Posets(u):
            ok = True
            for P in PP:
                if not U.has_isomorphic_subposet(P):
                    ok = False
                    break
            if ok:
                return U
        return None


**Update.** We also have $15 \le f(6) \le 17$. The multiple-chains argument gives easily $f(6) \ge 14$, because a 6-universal poset must contain a 6-chain, two mutually incomparable 3-chains, three such 2-chains, and six incomparable elements; these can overlap but at least 6+3+2+1+1+1=14 elements are required.
But $f(6)=14$ was ruled out by exhaustive search over all $1.34 \times 10^{12}$ 14-posets, using the C code "posets.c" by Brinkmann & McKay to list the posets, and some more C code to test for universality (about 16 cpu-days of computation; would have been impossible in Sage). Doing exhaustive search over 15- or 16-element posets does not seem promising — I hope there are better ways of proving lower bounds.

Another computational approach, which gives *upper bounds*, is to start from a known 6-universal poset, such as the Boolean lattice $B_6$ (= power set with inclusion relation), and *remove elements one by one*, if possible without breaking the universality. The idea of removing some unneeded elements is already implicit in the [old question][1]. Not knowing any better, I removed elements in random order until impossible, and restarted 100 times. Already here I got **one 17-poset** and seventeen 18-posets. This 6-universal 17-poset has cover relation 
[[0, 11], [0, 13], [0, 15], [1, 2], [1, 3], [1, 5], [2, 8], [2, 11], [3, 11], 3, 12], [4, 5], [4, 10], [5, 6], [5, 7], [6, 9], [6, 11], [6, 14], [7, 8], [7, 12], [8, 9], [8, 13], [9, 16], [10, 11], [10, 12], [10, 15], [11, 16], [12, 13], [12, 14], [13, 16], [14, 16], [15, 16]].

[![Picture of 6-universal 17-poset][5]][5]

This was done with very simple SageMath code (below), certainly one could do much more searching with faster C code.

    def is_universal_poset(n, U):
        return all(U.has_isomorphic_subposet(P) for P in Posets(n))
 
    def reduce_universal(n, P):
        print(P)
        if not is_universal_poset(n, P):
            return None    # Already nonuniversal
        R = list(Permutations(P).random_element())
        for r in R:
            Pr = P.subposet(set(P).difference(set([r])))
            if is_universal_poset(n, Pr):
                return reduce_universal(n, Pr)    # Try removing more
        return P        # Could not remove any element


  [1]: https://mathoverflow.net/questions/25874/what-is-the-minimal-size-of-a-partial-order-that-is-universal-for-all-partial-or
  [2]: https://oeis.org/A000112/list
  [3]: https://i.sstatic.net/1UF91.png
  [4]: https://trac.sagemath.org/ticket/14110
  [5]: https://i.sstatic.net/EF2PE.png