Как сделать страницу магазина woocommerce с пользовательским типом поста + и страницей оформления заказа - PullRequest
0 голосов
/ 03 июня 2018

Я делюсь 3 экранами, шаг за шагом будет через woocommerce.У меня есть страница магазина.Выбрав продукт, я перейду к форме для создания поста.После создания сообщения я перейду на страницу оформления заказа.

У меня такой вопрос: могу ли я получить среднюю (форму для создания сообщения) на платформе woocommerce?

Пожалуйста, посмотрите мойобщий экран для лучшего понимания.

Спасибо

Первый экран

first screen

Второй экран second screen

ТретийЭкран third screen

1 Ответ

0 голосов
/ 04 июня 2018

Мой вопрос заключается в том, могу ли я получить среднюю (внешнюю форму для создания публикации) в платформе 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 дня » и т. Д .; -)

С уважением, Бьорн

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...