Как изменить добавление новых записей в WordPress?

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

Мне надо как-то переделать добавление новых записей, я хочу изменить вид, тип, чтоб было не так как сейчас, что добавляешь какие-то поля ручками и тд, а выделить список необходимых полей, без которых нельзя запись опубликовать. Я вижу так примерно: Поле 1(обязательный текст, название статьи). Поле 2 картинка (обязательно) поле 3 описание какое-то и тд. Но я не могу найти где это делать, как файл ответственный называется за это, чтоб я мог его переписать?

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

ACF фремиум
carbonfields полностью бесплатно

Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Редакция Security Ответ

Если Вы хотите изменить добавление записей так, чтобы у автора был понятный набор обязательных полей, не нужно заставлять его заполнять “произвольные поля руками”. Для этого есть нормальные инструменты: ACF, Carbon Fields, Meta Box или собственные metabox-поля.

Самый практичный вариант — ACF:

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

Если нужен отдельный тип материалов, лучше создать CPT, например service или catalog_item, а не переделывать стандартные записи. Тогда в админке будет отдельный раздел с нужными полями и своим шаблоном.

Пример регистрации CPT:

add_action('init', function () {
    register_post_type('service', [
        'label' => 'Услуги',
        'public' => true,
        'show_in_rest' => true,
        'supports' => ['title', 'editor', 'thumbnail'],
        'has_archive' => true,
    ]);
});

add_action('init', function () { register_post_type('service', [ 'label' => 'Услуги', 'public' => true, 'show_in_rest' => true, 'supports' => ['title', 'editor', 'thumbnail'], 'has_archive' => true, ]); });

Обязательность полей лучше делать на уровне ACF. Если пишете своё, можно проверять перед сохранением:

add_action('save_post_service', function ($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
 
    if (empty($_POST['service_price'])) {
        remove_action('save_post_service', __FUNCTION__);
        wp_update_post([
            'ID' => $post_id,
            'post_status' => 'draft',
        ]);
    }
});

add_action('save_post_service', function ($post_id) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (empty($_POST['service_price'])) { remove_action('save_post_service', __FUNCTION__); wp_update_post([ 'ID' => $post_id, 'post_status' => 'draft', ]); } });

Но самодельная валидация быстро усложняется, поэтому ACF/Meta Box обычно дешевле и стабильнее.

Если нужно, чтобы админка выглядела как форма, можно скрыть лишние metaboxes через “Настройки экрана”, роли пользователей или код. Но не прячьте всё CSS-ом без логики: пользователь всё равно сможет сломать структуру.

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

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

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

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

комментарий

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

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