我将通过woocommerce一步步分享3个屏幕。 我有一个商店页面。在选择产品时,我将转到前端表单以创建帖子。创建帖子后,我将转到结帐页面。
我的问题是,我可以在woocommerce平台上获得中间版(创建帖子的前端表单)吗?
请查看我的共享屏幕,以便更好地了解它。
谢谢
第一个屏幕
第二个屏幕
第三屏幕
答案 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