Вопрос или проблема
Мне нужно добавить динамические поля с заголовком и описанием для поста в административной секции. Я хочу добавлять эти поля динамически при нажатии на кнопку “добавить новый заголовок и описание”. Я хочу сохранить их в базе данных, а затем нужно отображать на странице деталей поста на главной странице. Пожалуйста, помогите.
Вы можете использовать плагин ACF для добавления нескольких пользовательских полей к вашему посту с помощью этого плагина.
Пожалуйста, посмотрите этот ССЫЛКУ
Вы можете прочитать его документацию здесь, это ССЫЛКА
Дайте знать, если у вас есть вопросы.
Ответ или решение
Чтобы добавить динамические поля с названием и описанием для пользовательского типа записи в админ-разделе WordPress, необходимо следовать нескольким шагам, включая настроенную реализацию как на стороне сервера, так и на стороне клиента. Ниже приведено подробное руководство по реализации этой задачи.
Шаг 1: Создание пользовательского типа записи
Прежде всего, убедитесь, что у вас есть пользовательский тип записи. Для этого добавьте следующий код в файл functions.php
вашей темы:
function create_custom_post_type() {
register_post_type('my_custom_post',
array(
'labels' => array(
'name' => __('Мои пользовательские записи'),
'singular_name' => __('Пользовательская запись'),
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'custom-fields'),
)
);
}
add_action('init', 'create_custom_post_type');
Шаг 2: Установка и настройка плагина ACF
Как упоминалось в запросе, вы можете использовать плагин Advanced Custom Fields (ACF) для динамического управления полями. Установите и активируйте ACF через админ-панель WordPress.
- Перейдите в раздел Плагины → Добавить новый.
- Найдите плагин "Advanced Custom Fields" и установите его.
Шаг 3: Создание динамических полей
После установки ACF выполните следующие шаги для создания динамических полей:
- В админ-панели перейдите в раздел Custom Fields → Add New.
- Дайте название вашей группе полей, например, "Динамические поля".
- Нажмите Add Field и добавьте два поля: одно для названия и одно для описания.
- Для имени поля выберите тип "Text" для названия и "Textarea" для описания.
- Убедитесь, что в разделе "Location" выбрано "Post Type" и выберите ваш пользовательский тип записи (например,
my_custom_post
). - Сохраните изменения.
Шаг 4: Добавление JavaScript для динамического создания полей
Чтобы поля добавлялись динамически, вам необходимо добавить JavaScript код в админку. Создайте файл custom-admin.js
и подключите его в functions.php
:
function my_enqueue_admin_scripts() {
wp_enqueue_script('custom-admin-js', get_template_directory_uri() . '/custom-admin.js', array('jquery'), null, true);
}
add_action('admin_enqueue_scripts', 'my_enqueue_admin_scripts');
Внутри custom-admin.js
реализуйте функциональность для добавления новых полей:
jQuery(document).ready(function($){
var maxFields = 10; // максимальное количество полей
var wrapper = $(".fields-wrapper"); // контейнер для динамических полей
var addButton = $(".add-field"); // кнопка добавления нового поля
var fieldHTML = '<div class="field-group"><input type="text" name="dynamic_fields[]How to add dynamic fields on wordpress custom post type page in admin section" placeholder="Заголовок"/><textarea name="dynamic_fields[]How to add dynamic fields on wordpress custom post type page in admin section" placeholder="Описание"></textarea><a href="#" class="remove_field">Удалить</a></div>';
var fieldCount = 1; // текущее количество полей
$(addButton).click(function(e){
e.preventDefault();
if(fieldCount < maxFields){
fieldCount++;
$(wrapper).append(fieldHTML);
}
});
$(wrapper).on("click", ".remove_field", function(e){
e.preventDefault(); $(this).closest('.field-group').remove(); fieldCount--;
});
});
Шаг 5: Сохранение данных
Добавьте функцию для обработки сохранения полей:
function save_dynamic_fields($post_id) {
if (array_key_exists('dynamic_fields', $_POST)) {
update_post_meta($post_id, '_dynamic_fields', $_POST['dynamic_fields']);
}
}
add_action('save_post', 'save_dynamic_fields');
Шаг 6: Отображение информации на фронтенде
Для отображения сохраненных данных на странице поста, добавьте следующий код в файл-шаблон вашего пользовательского типа записи (например, single-my_custom_post.php
):
$dynamic_fields = get_post_meta(get_the_ID(), '_dynamic_fields', true);
if ($dynamic_fields) {
foreach ($dynamic_fields as $field) {
echo '<h3>' . esc_html($field['title']) . '</h3>';
echo '<p>' . esc_html($field['description']) . '</p>';
}
}
Заключение
Теперь вы имеете динамические поля заголовка и описания для вашего пользовательского типа записи в админкой WordPress. Поля могут добавляться и сохраняться, а затем отображаться на фронтенде. При реализации используйте практики безопасности и проверяйте данные перед сохранением.
Если у вас есть вопросы, пожалуйста, не стесняйтесь их задавать.