Как называется событие, когда добавляешь запись в WP?

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

в WP- когда открываешь админ панель - записи- все записи- добавить запись и у тебя начинается загрузка новой страницы для добавления новой записи, какое событие в этот момент вызывается (именно при создании, не когда уже пост сохраняешь)?
Мне прост надо папку создавать с айди этой записи, но я не могу найти названия события, которое в этот момент происходит

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

Как называется событие, когда добавляешь запись в WP?

wp_after_insert_post?
Fires actions after a post, its terms and meta data has been saved.

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

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

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Если Вам нужно выполнить действие именно в момент создания новой записи в админке, до сохранения контента, подход зависит от того, нужен ли уже ID записи. Когда нажимаете “Добавить запись”, WordPress обычно создаёт auto-draft. У него уже есть ID, но это ещё не опубликованная запись.

Для момента создания auto-draft можно использовать hook wp_insert_post или save_post, проверяя статус:

add_action('wp_insert_post', function ($post_id, $post, $update) {
    if ($update) {
        return;
    }
 
    if ($post->post_type !== 'post') {
        return;
    }
 
    if ($post->post_status !== 'auto-draft') {
        return;
    }
 
    // Здесь уже есть ID новой записи.
}, 10, 3);

add_action('wp_insert_post', function ($post_id, $post, $update) { if ($update) { return; } if ($post->post_type !== 'post') { return; } if ($post->post_status !== 'auto-draft') { return; } // Здесь уже есть ID новой записи. }, 10, 3);

Но создавать папку для каждого auto-draft опасно: пользователь может открыть “Добавить запись”, закрыть страницу, а черновик потом удалится. В итоге получите мусорные папки.

Лучше создавать папку при первом реальном сохранении черновика или публикации:

add_action('save_post_post', function ($post_id, $post, $update) {
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
        return;
    }
 
    if (!in_array($post->post_status, ['draft', 'publish'], true)) {
        return;
    }
 
    $dir = WP_CONTENT_DIR . '/post-files/' . $post_id;
 
    if (!file_exists($dir)) {
        wp_mkdir_p($dir);
    }
}, 10, 3);

add_action('save_post_post', function ($post_id, $post, $update) { if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) { return; } if (!in_array($post->post_status, ['draft', 'publish'], true)) { return; } $dir = WP_CONTENT_DIR . '/post-files/' . $post_id; if (!file_exists($dir)) { wp_mkdir_p($dir); } }, 10, 3);

Если папка нужна именно сразу при открытии формы, можно привязаться к load-post-new.php, но ID там ещё может быть неочевиден и логика зависит от редактора. Поэтому для папки с ID безопаснее использовать save_post.

Также подумайте, нужна ли физическая папка вообще. В WordPress вложения обычно привязываются к записи через attachment parent, а не через отдельную директорию на каждую запись. Если цель — хранить файлы записи, проще использовать медиабиблиотеку и метаполя.

Итог: событие “создания формы” — это не лучший момент. Делайте папку на save_post, когда запись действительно сохранена и её ID уже стабилен.

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

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

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

комментарий

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

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