Мой вопрос заключается в том, могу ли я получить среднюю (внешнюю форму для создания публикации) в платформе woocommerce?
Конечно, но вы должны сохранить данные с шага2 в текущем сеансе (корзина).Только когда заказ создан, соберите данные сеанса и создайте пост задания (custom_post_type).Вы не хотите создавать вакансию до того, как заказ будет выполнен / оплачен.
Ваш вопрос очень общий, поэтому вы можете ожидать аналогичного ответа.Мы не собираем полные плагины здесь.Для этого вам понадобится несколько хуков.
РЕДАКТИРОВАТЬ: дополнительная информация
@ шаг 2, собирать, очищать и проверять значения формы.Я бы сохранил эти данные в сеансе корзины.что-то вроде этого:
// I don't know how and where you collect the step 2 data,
// so i can't provide a hook for this function.
function step_2_data_to_session() {
global $woocommerce;
$step_two_data = array();
// validate and sanitize data first
// save data to woocommerce session
$woocommerce->session->set('step_two_data', $step_two_data );
}
Затем, когда пользователь платит и создает заказ, используйте ловушку, чтобы собрать данные сеанса и сохранить их в своем типе сообщения costom.
add_action('woocommerce_checkout_update_order_meta', 'new_order', 10, 2)
function new_order($order_id, $data) {
global $woocommerce;
// At this point the order is created and the session data is still alive.
if(! is_admin() ) {
$step_two_data = $woocommerce->session->get('step_two_data');
if($step_two_data) {
$args = array(
'post_author' => get_current_user_id(),
'post_title' => 'The Job title here',
'post_type' => 'job',
'post_status' => 'publish'
);
$new_job_post_id = wp_insert_post($args);
if($new_job_post_id) {
// Job post is saved now..
// Now you'll probably want to add step_two_data as meta data to the post.
}
}
}
}
ПРИМЕЧАНИЕ: Я не тестировал этот код, обработка ошибок не включена и т. Д. Это всего лишь указатель, как сохранить данные сеанса при создании заказа.
У вас будетнапример, чтобы сделать гораздо больше, я вижу, что список вакансий имеет установленную дату истечения срока действия.Я бы использовал cron-job для ежедневной проверки того, какие вакансии нужно удалить, с тем же cron-кодом, который я бы также информировал клиентов, их должность « будет удалена через 2 дня » и т. Д .; -)
С уважением, Бьорн