заканчивайте пользоваться функциями ACF, если уж пользуете его, а это хреново, для получения значений пользуйте функции движка.
рабоче но не красиво для того, что бы понять как работает и что берет откуда это будет так
/**
* получение Url сохраненнвй в мета поле bg_header
*
* @param null $id ID термина или записи (не обязательно)
*
* @return string
*/
function wpp_my_back_url( $id = null ) {
# Если id не передан - получить
if ( empty( $id ) ) {
$id = get_queried_object_id();
}
# задать пустую переменную
$bg = '';
#если единичный тип записи
if ( is_singular() ) {
#если тип записи post
if ( is_single() ) {
#проверка поля у первой родительской категории
$term = get_the_category( $id );
$bg = get_term_meta( $term[0]->cat_ID, 'bg_header', true );
}
#если не post или в категории поле пустое получение значение поля из записи
if ( empty( $bg ) ) {
$bg = get_post_meta( $id, 'bg_header', true );
}
#получение поля из термина(категории)
} else {
$bg = get_term_meta( $id, 'bg_header', true );
}
#если бэкраунд задам вернуть его, если нет вернуть урл по умолчанию
return ! empty( $bg ) ? esc_url( $bg ) : 'Изображение по умолчанию';
}
style="background-image: url(<?php echo wpp_my_back_url(); ?>);"
Для красиво можете переписать на основе полученных знаний с использованием
call_user_func https://www.php.net/manual/ru/function.call-user-f...