以短码表示的自定义用户元值

时间:2018-08-23 作者:Alief

我一直在四处寻找,但找不到解决办法。我试图在一个短代码中显示当前登录用户的一些用户元值。

元键是

_wc_braintree_credit_card_payment_tokens
示例值为

a:1:{s:7:"bhaddfh";a:7:{s:7:"default";b:0;s:4:"type";s:11:"credit_card";s:9:"last_four";s:4:"2122";s:9:"card_type";s:10:"mastercard";s:9:"exp_month";s:2:"10";s:8:"exp_year";s:4:"2022";s:18:"billing_address_id";s:2:"sz";}}
如何在快捷码中显示“last\\u four”值和“card\\u type”值(此处示例中为mastercard)?

在前端显示它们以供当前用户查看。在付款方式列表中最多保存一张最新卡(如果保存了多张卡)。

非常感谢。

1 个回复
SO网友:WebElaine

您没有提到用户是否只能在登录时访问此页面,因此此示例包括一项检查,以确保当前访问者已登录,否则不会输出任何内容。

<?php
// create the shortcode
add_shortcode(\'wpse_312268_show_cc_info\', \'create_wpse_312268_shortcode\');
function create_wpse_312268_shortcode() {
    // only do something if user is logged in
    if(is_user_logged_in()) {
        // get their id
        $user_id = get_current_user_id();
        // get the specific usermeta value as an array
        $cc_meta = get_user_meta($user_id, \'_wc_braintree_credit_card_payment_tokens\', false);
        // get specific values from the array
        $last_four = $cc_meta[\'last_four\'];
        $card_type = $cc_meta[\'card_type\'];
        // only show if the values aren\'t empty
        if(!empty($last_four) && !empty($card_type)) {
            // display with whatever markup you like
            echo "<div class="cc_info">$card_type ending in
                $last_four</div>";
        }
    }
}
?>
根据您的需要,您可能还希望使文本可翻译。

结束

相关推荐