在WooCommerce中添加隐藏的结帐字段?

Mar*_* I. 2 php wordpress checkout woocommerce hook-woocommerce

我想包含一个指向通过WooCommerce提交结帐表格的当前用户的个人资料的链接。

也就是说,要在隐藏字段中自动放置当前用户的作者链接,如下所示: example.com/author/username

我想通过在结帐表单中添加一个隐藏字段来实现这一点。因此,要获得链接,我会写这样的东西:

<?php

$currentUser = get_current_user_id();

$user = get_user_by( 'id', $currentUser );

$userUrl = get_bloginfo( 'home' ) . '/author/' . $user->user_login;

echo $userUrl;
?>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在结帐表单中创建这种类型的隐藏字段?

Loi*_*tec 6

使用挂接到woocommerce_after_order_notes动作挂钩的自定义功能,您还可以使用此用户“作者链接”直接输出一个隐藏字段作为隐藏值,当客户下订单时,该字段将与所有结帐字段同时提交。

这是该代码:

add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_hidden_field', 10, 1 );
function my_custom_checkout_hidden_field( $checkout ) {

    // Get an instance of the current user object
    $user = wp_get_current_user();

    // The user link
    $user_link = home_url( '/author/' . $user->user_login );

    // Output the hidden link
    echo '<div id="user_link_hidden_checkout_field">
            <input type="hidden" class="input-hidden" name="user_link" id="user_link" value="' . $user_link . '">
    </div>';
}
Run Code Online (Sandbox Code Playgroud)

然后,您将需要按以下方式按顺序保存此隐藏字段:

add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_hidden_field', 10, 1 );
function save_custom_checkout_hidden_field( $order_id ) {

    if ( ! empty( $_POST['user_link'] ) )
        update_post_meta( $order_id, '_user_link', sanitize_text_field( $_POST['user_link'] ) );

}
Run Code Online (Sandbox Code Playgroud)

代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

该代码已经过测试并且可以正常工作