Вставить форму «Новая почта» внутри формы «Новая почта»

Можно ли встроить форму «Новое сообщение» для одного настраиваемого типа сообщения в форму «Новое сообщение» для другого настраиваемого типа записи?

Когда пользователь добавляет новый пост для пользовательского типа «Событие», он также должен иметь возможность добавить новый пост для пользовательского типа «Сессия», не покидая страницу «Новое событие». Пользователь также должен иметь возможность добавлять теги только для сообщения «Сессия».

Это почти то же самое, что и добавление настраиваемого метабокса для типа сообщения «Событие», с единственным исключением, что событие Данные «сеанса» следует сохранять как пост, а не как термин.

Ответы и комментарии:

Да, можно подключиться к действию save_post одного типа записи и выполнить wp_insert_post в другом типе записи.
Заметки:

мета-бокс генерируется только при создании нового поста.
Типы сообщений: портфолио и галерея.
мета-поле появляется в портфолио и содержит только одно поле textarea, которое используется для содержимого автоматически сгенерированного сообщения галереи.
название автоматически сгенерированного поста совпадает с оригинальным постом.
настроить для правильных типов сообщений.
добавьте поля по мере необходимости.
измените массив записей $ add_cpt_clone, как требуется.
используйте $ p_id для добавления тегов (или пользовательской таксономии) к автоматически сгенерированной записи. Обратитесь к этому ответу, чтобы увидеть, как.

add_action ('add_meta_boxes', 'add_custom_box_wpse_76945');
add_action ('save_post', 'save_postdata_wpse_76945', 10, 2);

/ **
 * Мета бокс для почтового типа PORTFOLIO
 * /
функция add_custom_box_wpse_76945 ()
{
    // Показывать ТОЛЬКО при создании НОВОГО ПОЧТА
    глобальный $ pagenow;
    if ('post-new.php'! = $ pagenow)
        вернуть;

    // Добавить метабокс в ПОРТФОЛИО
    add_meta_box (
        'Sectionid_wpse_76945',
        __ («Создать сообщение в другом CPT»),
        'Inner_custom_box_wpse_76945',
        'портфолио'
    );
}

/ **
 * Содержимое мета-бокса
 * /
функция inner_custom_box_wpse_76945 ($ post)
{
    // Используем nonce для проверки
    wp_nonce_field (plugin_basename (__FILE__), 'noncename_wpse_76945');

    // Поле для ввода данных
    echo '

THE_CONTENT h4>';
    echo ' textarea>';
}

/ **
 * Создает новый пост в типе постов GALLERY.
 * /
функция save_postdata_wpse_76945 ($ post_id, $ post_object)
{
    // Автосохранение?
    если (определено ('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        вернуть;

    // Правильный тип post_type
    if ('portfolio'! = $ post_object-> post_type)
        вернуть;

    // Безопасность
    если (
        ! Исеть ($ _ POST [ 'noncename_wpse_76945'])
        || ! wp_verify_nonce ($ _POST ['noncename_wpse_76945'], plugin_basename (__FILE__))
        )
        вернуть;

    // Готовим содержимое
    $ add_cpt_clone = array (
                    'post_title' => $ post_object-> post_title,
                    'post_content' => $ _POST ['the_content_wpse_76945'],
                    'post_status' => 'publish',
                    'post_type' => 'галерея'
                  );

    // Вставить пост в базу данных
    $ p_id = wp_insert_post ($ add_cpt_clone);

    // Используем $ p_id для вставки новых терминов
}

Создан 13-04-2017 12:54 Community♦1