Во-первых, можно сократить и упростить код:
<span>
<?php echo get_post_meta( get_queried_object_id(), 'contact-phone', true ); ?>
</span>
Во-первых, get_queried_object_id() обращается к уже находящимся в runtime cache данным, соответственно, нет необходимости создавать еще одну переменную и тратить память.
Во-вторых, это и есть короткий самый прямой способ - конкретное получение одного значения мета-поля для одного конкретного поста.
Далее, совет
Роман Краббз в общем-то правильный. Если работаете с метаданными в количестве более пары штук и вам могут понадобиться произвольные поля разных типов (файл, визуальный редактор и тд) - берите ACF. Что касается вашего другого вопроса, где у вас не выводилось поле - это потому что у вас там цикла (WordPress Loop) не было, соответственно не было глобального $post_id, который является вторым, опциональным аргументом функции get_gield(). Если нету глобального $post_id, его можно передать принудительно - кстати, через тот же get_queried_object_id().