@hypero

Вывод фона через ACF на страницах Wordpress?

Всем привет.

Вывожу фон через ACF на страницах WP.
Код:
<?php $term = get_queried_object(); ?>
            <div class="header__bg" style="background-image: url(<?php the_field('bg_header', $term); ?>);"></div>


Условия ACF:
5d9f6473287e0058758634.png
Всё выводится, но например если захожу на одиночную страницу статьи блога, то там не выводится. (фон для страницы блога поставлен)
Хотелось бы, чтобы например если поставлен фон на страницу блога, то для внутренних страниц тоже выводился этот фон.
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
заканчивайте пользоваться функциями 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...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы