将上一页标题传递给Woocommerce中的自定义结帐字段

时间:2018-09-06 19:50:52

标签: php wordpress woocommerce checkout hook-woocommerce

使用Woocommerce,可以将上一页标题传递到自定义结帐字段吗?

1 个答案:

答案 0 :(得分:0)

已更新-以下代码示例使用PHP Session抓取上一页标题(此代码示例可以扩展)

add_action( 'template_redirect', 'grab_previous_page_title' );
function grab_previous_page_title() {
    session_start();

    // Not on checkout page
    if( ! is_checkout() ) { 
        $_SESSION['previous_page_title'] = wp_title('', false);
    }
}
  

在结帐页面中,您可以使用以下方法获取上一页的标题:

$previous_page_title = $_SESSION['previous_page_title'];

然后在结帐页面中,我们可以在隐藏的输入字段中添加上一个页面标题:

// Checkout: Display a hidden input field with previous page title inside checkout form
add_action( 'woocommerce_after_order_notes', 'hidden_input_field_previous_page_title' );
function hidden_input_field_previous_page_title() {

    if( isset($_SESSION['previous_product_title']) ) {
        echo '<input type="hidden" name="previous_page_title" value="'.$_SESSION['previous_page_title'].'">';
    }
}

然后在提交订单时,我们将自定义隐藏字段值保存为订单元数据:

// Save the custom hidden field value as order meta data
add_action('woocommerce_checkout_create_order', 'save_previous_page_title', 22, 2 );
function save_previous_page_title( $order, $data ) {
    if ( isset($_POST['previous_page_title']) ) {
        $order->update_meta_data( '_previous_page_title', sanitize_text_field($_POST['previous_page_title']) );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。