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

时间:2017-03-05 17:57:02

标签: php wordpress woocommerce checkout 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;
?>

我的问题是如何以结帐形式创建此类隐藏字段?

感谢。

2 个答案:

答案 0 :(得分:4)

使用隐藏在 generateMessageList(auth, messages) 操作挂钩中的自定义函数,您还可以直接使用此用户输出隐藏字段&#34; author link&#34;作为隐藏价值,当客户下订单时,将与所有结账字段同时提交。

以下是代码:

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>';
}

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

代码经过测试并正常运行

答案 1 :(得分:-1)

将它添加到你的functions.php文件(或插件文件等)

add_action( 'woocommerce_after_order_notes', 'hidden_author_field' );

function hidden_author_field( $checkout ) {

$currentUser = get_current_user_id();
$user = get_user_by( ‘id’, $currentUser );
$userUrl = get_bloginfo(‘home’).’/author/’.$user->user_login;

    woocommerce_form_field( 'hidden_author', array(
        'type'          => 'hidden',
        'class'         => array('hidden form-row-wide'),
        ), $userUrl);

}

此代码未经测试,更多信息请参见https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/http://woocommerce.wp-a2z.org/oik_api/woocommerce_form_field/。如果这对您有用,请告诉我,如果不是,那么问题是什么。