Каким образом можно вставить группу полей ACF в записи Wordpress, чтобы она располагалась после первого абзаца?

Как изменить расположение полей, чтобы они выводились после первого абзаца записи вместо конца записи?
  • 4 октября 2023 г. 8:47
Ответы на вопрос 2
Для вставки группы полей ACF после первого абзаца записи в WordPress, вы можете использовать фильтр `the_content`, который позволяет модифицировать вывод контента записи.

Ниже приведен пример кода, который можно добавить в файл `functions.php` вашей темы:

```php
function insert_acf_fields_after_first_paragraph($content) {
    // проверяем, является ли текущая страница записью
    if (is_singular('post')) {
        // получаем ID текущей записи
        $post_id = get_the_ID();
        
        // проверяем наличие группы полей ACF
        if (have_rows('имя_группы_полей', $post_id)) {
            // сохраняем первый абзац в отдельной переменной
            $first_paragraph = '';

            // разделяем контент на абзацы
            $paragraphs = explode("</p>", $content);

            // ищем первый непустой абзац
            foreach ($paragraphs as $index => $paragraph) {
                if (trim($paragraph) !== '') {
                    $first_paragraph = $paragraph;
                    break;
                }
            }
            
            // ищем группу полей и добавляем ее после первого абзаца
            while (have_rows('имя_группы_полей', $post_id)) {
                the_row();

                // получаем HTML-код для каждого поля и добавляем его в переменную $acf_output
                // замените 'имя_поля' на реальные имена полей в вашей группе полей ACF
                $acf_output .= '<p>'; 
                $acf_output .= get_sub_field('имя_поля');
                $acf_output .= '</p>';
            }

            // добавляем группу полей после первого абзаца
            $content = str_replace($first_paragraph, $first_paragraph . $acf_output, $content);
        }
    }
    
    return $content;
}
add_filter('the_content', 'insert_acf_fields_after_first_paragraph');
```

Не забудьте заменить `'имя_группы_полей'` и `'имя_поля'` на реальные значения имени вашей группы полей ACF и полей внутри нее соответственно. Сохраните изменения и обновите страницу с записью, чтобы увидеть результат.
1. Простейший способ решения этой задачи - оставить окно редактора под первым абзацем, если такие ситуации возникают регулярно. Затем, используя ACF, создать второе окно редактора на странице и вывести необходимое поле между ними.

2. Если первый способ не удовлетворяет, рекомендуется воспользоваться шорткодом. Вы можете ознакомиться с информацией по ссылке wp-kama.ru/plugin/acf/shortkod. Учтите, что вам придется ручным образом добавлять шорткоды в каждый пост.
Похожие вопросы