如何使用自定义帖子类型+和结帐页面制作woocommerce商店页面

时间:2018-06-03 19:47:28

标签: php wordpress woocommerce

我将通过woocommerce一步步分享3个屏幕。 我有一个商店页面。在选择产品时,我将转到前端表单以创建帖子。创建帖子后,我将转到结帐页面。

我的问题是,我可以在woocommerce平台上获得中间版(创建帖子的前端表单)吗?

请查看我的共享屏幕,以便更好地了解它。

谢谢

第一个屏幕

first screen

第二个屏幕 second screen

第三屏幕 third screen

1 个答案:

答案 0 :(得分:0)

  

我的问题是,我可以获得中间的(前端形式)   在woocommerce平台创建一个帖子?

当然,但您必须在当前会话(购物车)中保存步骤2中的数据。 仅在创建订单时,收集会话数据并创建(custom_post_type)作业发布。在订单完成/付款之前,您不想创建工作岗位。

你的问题非常笼统,所以你可以期待一个类似的答案。我们不在这里构建完整的插件。您将需要使用多个钩子来完成此操作。

编辑:更多信息

@ step 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天内删除'等等; - )

问候,Bjorn