我想在通过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;
?>
我的问题是如何以结帐形式创建此类隐藏字段?
感谢。
答案 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/。如果这对您有用,请告诉我,如果不是,那么问题是什么。