Как добавить поля для ввода на сайт, созданный с помощью WordPress?

Как можно добавить несколько полей, таких как "название" и "описание", при создании записи в WordPress, чтобы введённый текст автоматически вставлялся в шаблон?
  • 13 января 2025 г. 20:43
Ответы на вопрос 2
Чтобы добавить поля для ввода, такие как "название" и "описание", при создании записи в WordPress, вы можете использовать функционал метаполей (custom fields) или пользовательские поля (custom meta boxes). Вот пошаговое объяснение, как это сделать:

### Шаг 1: Создание пользовательских полей

#### 1. Использование плагина (рекомендуется для начинающих)

Самый простой способ добавить пользовательские поля — использовать плагин. Один из популярных плагинов для этого — **Advanced Custom Fields (ACF)**.

- Установите и активируйте плагин ACF.
- Перейдите в «Custom Fields» и нажмите «Add New».
- Создайте группу полей. Добавьте нужные поля (например, "название" и "описание").
- Настройте правила отображения (например, показывать на страницах записи).
- Сохраните изменения.

#### 2. Добавление пользовательских полей без плагина

Если вы хотите сделать это без плагина, вам нужно использовать код:

1. **Добавьте метабокс в админке:**

   В файле `functions.php` вашей темы добавьте следующий код:

   ```php
   function my_custom_meta_box() {
       add_meta_box(
           'my_meta_box',         // ID метабокса
           'Дополнительная информация', // Заголовок метабокса
           'my_meta_box_callback', // Функция обратного вызова
           'post'                 // Тип записи (в данном случае - пост)
       );
   }
   add_action('add_meta_boxes', 'my_custom_meta_box');

   function my_meta_box_callback($post) {
       wp_nonce_field('my_meta_box_nonce', 'meta_box_nonce');

       $title = get_post_meta($post->ID, '_my_meta_title', true);
       $description = get_post_meta($post->ID, '_my_meta_description', true);

       echo '<label for="my_meta_title">Название</label>';
       echo '<input type="text" id="my_meta_title" name="my_meta_title" value="' . esc_attr($title) . '" size="25" />';
       echo '<label for="my_meta_description">Описание</label>';
       echo '<textarea id="my_meta_description" name="my_meta_description">' . esc_textarea($description) . '</textarea>';
   }
   ```

2. **Сохраните значения метаполей:**

   Также добавьте следующий код в `functions.php`:

   ```php
   function my_save_meta_box_data($post_id) {
       if (!isset($_POST['meta_box_nonce']) || !wp_verify_nonce($_POST['meta_box_nonce'], 'my_meta_box_nonce')) {
           return;
       }

       if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
           return;
       }

       if (!current_user_can('edit_post', $post_id)) {
           return;
       }

       if (isset($_POST['my_meta_title'])) {
           update_post_meta($post_id, '_my_meta_title', sanitize_text_field($_POST['my_meta_title']));
       }

       if (isset($_POST['my_meta_description'])) {
           update_post_meta($post_id, '_my_meta_description', sanitize_textarea_field($_POST['my_meta_description']));
       }
   }
   add_action('save_post', 'my_save_meta_box_data');
   ```

### Шаг 2: Вывод пользовательских полей в шаблоне

Чтобы вывести значения этих полей в вашем шаблоне, например, в `single.php`, добавьте следующий код:

```php
$title = get_post_meta(get_the_ID(), '_my_meta_title', true);
$description = get_post_meta(get_the_ID(), '_my_meta_description', true);

if ($title) {
    echo '<h1>' . esc_html($title) . '</h1>';
}

if ($description) {
    echo '<p>' . esc_html($description) . '</p>';
}
```

### Заключение

Теперь ваши пользовательские поля "название" и "описание" будут отображаться в редакторе записей, и данные из этих полей смогут автоматически выводиться в шаблоне вашего сайта. Если вы используете плагин ACF, процесс будет более простым, но и самостоятельно настроенный подход также дает отличные результаты.
Для этого в ВП есть произвольные поля . А для удобной работы с ними - плагины 

Но если речь идёт о SEO, то лучше использовать seo-плагины
Похожие вопросы