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)
我的问题是如何在结帐表单中创建这种类型的隐藏字段?
使用挂接到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文件中,或者在任何插件文件中。
该代码已经过测试并且可以正常工作
| 归档时间: |
|
| 查看次数: |
4225 次 |
| 最近记录: |