2017-03-18 133 views
0

在我的Wordpress网站上,我想在提交表单后将其重定向到example.com/user这样的页面。将表单提交重定向到其他页面问题

:method:POST 
:path:/dash/product/edit/ 

这里是形式的开头:

<!-- Submission Form --> 
<form method="post" action="" id="wcv-product-edit" class="wcv-form wcv-formvalidator"> 

和表格的末尾:

<?php WCVendors_Pro_Product_Form::form_data($object_id, $post_status); ?> 
      <?php WCVendors_Pro_Product_Form::save_button($title); ?> 

我试图把这个表格里面:

header('Location: http://www.example.com/user'); 

但是,这重定向整个页面的形式是没有将表单提交到example.com/user。表单位于此路径上:/dash/product/edit/。所以,当我要求这个路径(如该表格位于),它只是重定向到example.com/user

表控制器:

public function process_submit() { 

     if (! isset($_POST[ '_wcv-save_product' ]) || !wp_verify_nonce($_POST[ '_wcv-save_product' ], 'wcv-save_product') || !is_user_logged_in()) { 
      return; 
     } 

     $can_submit_live  = WC_Vendors::$pv_options->get_option('can_submit_live_products'); 
     $current_post_status = isset($_POST[ 'post_status' ]) ? $_POST[ 'post_status' ] : ''; 
     $can_edit_approved  = WC_Vendors::$pv_options->get_option('can_edit_approved_products'); 
     $trusted_vendor   = (get_user_meta(get_current_user_id(), '_wcv_trusted_vendor', true) == 'yes') ? true: false; 
     $untrusted_vendor  = (get_user_meta(get_current_user_id(), '_wcv_untrusted_vendor', true) == 'yes') ? true: false; 

     if ($trusted_vendor) $can_submit_live = true; 
     if ($untrusted_vendor) $can_submit_live = false; 


     $text = array('notice' => '', 'type' => 'success'); 

我怎样才能将其重定向到example.com/user后,才成功提交表单?

回答

1

您需要某种形式的钩子来提供表单的状态,并将其绑定到重定向以便执行钩子操作。就像使重定向成为一个函数,并且在表单正确提交时调用该函数一样。有第三方插件像Gravity From可以为你做到这一点。如果你想要这样的付费服务,它取决于你。

public function process_submit() { 
 

 
    if (! isset($_POST[ '_wcv-save_product' ]) || !wp_verify_nonce($_POST[ '_wcv-save_product' ], 'wcv-save_product') || !is_user_logged_in()) { 
 
    return; 
 
    } 
 

 
    $can_submit_live  = WC_Vendors::$pv_options->get_option('can_submit_live_products'); 
 
    $current_post_status = isset($_POST[ 'post_status' ]) ? $_POST[ 'post_status' ] : ''; 
 
    $can_edit_approved  = WC_Vendors::$pv_options->get_option('can_edit_approved_products'); 
 
    $trusted_vendor   = (get_user_meta(get_current_user_id(), '_wcv_trusted_vendor', true) == 'yes') ? true: false; 
 
    $untrusted_vendor  = (get_user_meta(get_current_user_id(), '_wcv_untrusted_vendor', true) == 'yes') ? true: false; 
 

 
    if ($trusted_vendor) { 
 
    header('Location: http://www.example.com/user'); 
 
    }else { 
 
    # code... 
 
    } 
 

 

 
    $text = array('notice' => '', 'type' => 'success'); 
 
}

public function process_submit() { 
 

 
    if (! isset($_POST[ '_wcv-save_product' ]) || !wp_verify_nonce($_POST[ '_wcv-save_product' ], 'wcv-save_product') || !is_user_logged_in()) { 
 
     return; 
 
    } 
 

 
    $can_submit_live  = WC_Vendors::$pv_options->get_option('can_submit_live_products'); 
 
    $current_post_status = isset($_POST[ 'post_status' ]) ? $_POST[ 'post_status' ] : ''; 
 
    $can_edit_approved  = WC_Vendors::$pv_options->get_option('can_edit_approved_products'); 
 
    $trusted_vendor   = (get_user_meta(get_current_user_id(), '_wcv_trusted_vendor', true) == 'yes') ? true: false; 
 
    $untrusted_vendor  = (get_user_meta(get_current_user_id(), '_wcv_untrusted_vendor', true) == 'yes') ? true: false; 
 

 
    if ($trusted_vendor) $can_submit_live = true; 
 
    if ($untrusted_vendor) $can_submit_live = false; 
 

 
    if ($can_submit_live) { 
 
     header('Location: http://www.example.com/user'); 
 
    }else { 
 
     # code... 
 
    } 
 
    
 
    $text = array('notice' => '', 'type' => 'success'); 
 
}

+0

我会使用插件,但我必须要使用的是插件的一部分的形式:/ –

+1

既然你写的形式和自己验证;你会得到验证失败或成功的结果吗?如果你这样做,你可以绑定'header('Location:http://www.example.com/user');'用'if语句'来绑定。重定向发生无缘无故,因为它是一个独立的功能,没有什么可以打断默认流程,如查询 –

+0

嗨,编辑我的问题和添加表单控制器与if语句提交按钮。请检查一下。 –

相关问题