Установите значения полей в 1 месте и примените эти значения на всех других страницах - PullRequest
0 голосов
/ 26 марта 2019

Я использую ACF для рекламы. Есть 2 поля, изображение для объявления и ссылка, по которой оно будет отображаться при нажатии. Я настроил их, и они работают правильно. Они должны отображаться на домашней странице и на страницах сообщений.

Теперь, о чем этот вопрос: я хотел бы иметь возможность размещать объявление только на главной странице (или где-то еще, если у вас есть идея получше) и применять эти значения полей на страницах сообщений.

В настоящее время я установил его для домашней страницы, все в порядке, и он работает. Но если я создаю новое сообщение в блоге, мне нужно выбрать объявление для каждого нового сообщения в блоге. Я считаю, что это плохой UX, потому что, если есть только 1 объявление, было бы лучше установить его один раз и применять везде.

Каков наилучший подход для реализации этого?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Настоящий способ сделать это с ACF - использовать параметр $ post-> ID.

Скажем, вы установили значение поля на домашней странице, теперь вы не хотите вносить его на другие страницы, просто не будет работать следующее:

the_field('homepage_field');

Вы должны указать ACF, какой идентификатор страницы проверить для значения:

the_field('homepage_field', $pageID);

Если вы пытаетесь получить домашнюю страницу, которая установлена ​​на первой странице в настройках WordPress, используйте следующее:

$frontpage_id = (int)get_option( 'page_on_front' );
the_field('homepage_field', $frontpage_id);

Это также будет работать с:

  • get_field ('field_name', $ pageID)
  • get_sub_field ('field_name', $ pageID)
  • the_sub_field ('field_name', $ pageID)
  • have_rows ('field_name', $ pageID)

Относительно потенциального другого варианта, как вы упомянули, если бы он был предложен. Попробуйте подключить плагин страницы параметров Premium ACF, это позволит вам получить поля, используя:

  • the_field ('field_name', 'options')
  • get_field ('field_name', 'options')
  • get_sub_field ('field_name', 'options')
  • the_sub_field ('field_name', 'options')
  • have_rows ('field_name', 'options')
0 голосов
/ 26 марта 2019

Редактировать: посмотрите на принятый ответ для более чистого решения

Я провел еще несколько исследований и нашел решение.

В вашем functions.php вашей теме создайте функцию дляполе, которое вы хотите получить.Для моей ситуации это выглядит так:

// Get the Sponsored Content Image 
function get_sponsored_content_image()
{
  return get_field('advertisement_photo');
}

А затем в части шаблона, где вы хотите получить доступ к полю, просто сделайте это:

<?php $sponsored_photo = get_sponsored_content_image();
...