Как привязать доп поле к всем страницам либо шаблону что бы не заполнять?

Ссылка скопирована
1 ответ

В общем есть один блок на сайте, сформирован на acf
и он должен выводиться почти на всех страницах
если подвязываю эту группу с полем к нужным страницам или шаблону, то на каждой странице его нужно заполнять постоянно , а это геморрой
я хочу его в одном месте или на одной странице заполнить, и что бы этот блок выводился на остальных нужных страницах
К чему и как его правильно подвязать?

Дополнительно

Вы можете установить значение по умолчанию

  • Артем Золин, ну а как в повторитель вставить значения по умолчанию? никак
    там в основном блоки с повторителем
  • Как привязать доп поле к всем страницам либо шаблону что бы не заполнять?

    Иван Медведев @mediol-name Wordpress Developer Попробуй этот блок вывести в Options, там раз заполни и от туда тяни данные по всему сайту, куда заблагорассудится.

    • Можно подробнее? как это вывести в Options? у меня нет там Options
      или я не туда смотрю?
    • Как привязать доп поле к всем страницам либо шаблону что бы не заполнять?

    • Иван Медведев, Спасибо
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ирина WP Ответ

    Если один и тот же ACF-блок должен выводиться почти на всех страницах, не привязывайте его поля к каждой странице отдельно. Это приведет к дублированию данных: один и тот же контент придется заполнять много раз, а при изменении блока придется обходить все страницы. Правильный вариант — хранить общие данные в одном месте, а в шаблонах только читать их и выводить там, где нужно.

    Если у вас ACF Pro, самый удобный путь — Options Page. Вы создаете отдельную страницу настроек в админке, привязываете к ней группу полей, один раз заполняете повторитель или другие поля, а потом получаете эти значения через get_field с параметром option.

    add_action('acf/init', function () {
        if (! function_exists('acf_add_options_page')) {
            return;
        }
     
        acf_add_options_page([
            'page_title' => 'Глобальные блоки',
            'menu_title' => 'Глобальные блоки',
            'menu_slug' => 'global-blocks',
            'capability' => 'edit_posts',
            'redirect' => false,
        ]);
    });

    add_action('acf/init', function () { if (! function_exists('acf_add_options_page')) { return; } acf_add_options_page([ 'page_title' => 'Глобальные блоки', 'menu_title' => 'Глобальные блоки', 'menu_slug' => 'global-blocks', 'capability' => 'edit_posts', 'redirect' => false, ]); });

    После добавления кода в админке появится пункт Глобальные блоки. В настройках группы ACF нужно выбрать правило показа: Options Page равно Глобальные блоки. Тогда повторитель будет заполняться не на каждой странице, а один раз в общей настройке.

    Пример вывода обычного поля:

    $block_title = get_field('block_title', 'option');
     
    if ($block_title) {
        echo esc_html($block_title);
    }

    $block_title = get_field('block_title', 'option'); if ($block_title) { echo esc_html($block_title); }

    Пример вывода повторителя из Options Page:

    if (have_rows('block_items', 'option')) {
        echo '<ul>';
     
        while (have_rows('block_items', 'option')) {
            the_row();
     
            $title = get_sub_field('title');
     
            if ($title) {
                echo '<li>' . esc_html($title) . '</li>';
            }
        }
     
        echo '</ul>';
    }

    if (have_rows('block_items', 'option')) { echo '<ul>'; while (have_rows('block_items', 'option')) { the_row(); $title = get_sub_field('title'); if ($title) { echo '<li>' . esc_html($title) . '</li>'; } } echo '</ul>'; }

    Если на некоторых страницах нужно иметь свое значение, а на остальных брать общее, сделайте fallback. Сначала пробуйте получить поле текущей страницы, а если оно пустое, берите значение из option.

    $items = get_field('block_items');
     
    if (empty($items)) {
        $items = get_field('block_items', 'option');
    }

    $items = get_field('block_items'); if (empty($items)) { $items = get_field('block_items', 'option'); }

    • Options Page подходит для глобальных блоков: баннеров, преимуществ, контактов, повторяющихся CTA и общих секций.
    • Привязка к шаблону подходит, когда у каждой страницы на этом шаблоне должны быть свои индивидуальные значения.
    • Значения по умолчанию неудобны для повторителей, потому что они не решают задачу централизованного редактирования уже заполненного контента.
    • Если ACF Pro нет, запасной вариант — создать отдельную служебную страницу, заполнить поля на ней и читать их по ID этой страницы, но это менее чистое решение.

    Для вашего случая лучше Options Page: один раз создаете группу с повторителем, один раз заполняете блок в настройках, затем выводите его в нужных шаблонах. Если блок должен быть почти везде, условие показа лучше держать в шаблоне: например не выводить на корзине, оформлении заказа, странице благодарности или других исключениях. Так данные остаются едиными, а логика показа управляется кодом, без ручного копирования по страницам.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно