web-dev-qa-db-ja.com

1つのパラメータでショートコードを作成する方法(atts)

ショートコードが1つの属性で動作するようにするのに問題があります。

これが私のショートコードです[sme_user-email userID="2"]

ここに私のスクリプトがあります - それらのどれも動作しません。

function getUserEmail_func($atts) {
    extract(shortcode_atts(array('userID' => 1,), $atts));
    $user_info = get_userdata($atts);
    return $user_info->user_email;
}
add_shortcode('sme_user-email', 'getUserEmail_func');

function getUserEmail_func($atts) {
    $user_info = get_userdata($atts);
    return $user_info->user_email;
}
add_shortcode('sme_user-email', 'getUserEmail_func');

function getUserEmail_func($atts) {
    $user_info = get_userdata($atts['userID]');
    return $user_info->user_email;
}
add_shortcode('sme_user-email', 'getUserEmail_func');

これはうまくいきます - しかし私はユーザーIDをハードコードしたくありません。動的にできることを望んでいました

function getUserEmail_func($atts) {
    $user_info = get_userdata(2);
    return $user_info->user_email;
}
add_shortcode('sme_user-email', 'getUserEmail_func');

5
tammy

ショートコードを作成する方法は次のとおりです。

$attsは配列なので、最初にget_userdata$atts項目を定義する必要があります。また、大文字の属性名にも問題があると思いますので、attributeを小文字で使用する必要があります。 userIDの代わりにuseridを使用してください。

function getUserEmail_func( $atts ) {
    $user_info = get_userdata( $atts['userid'] );
    return $user_info->user_email;
}
add_shortcode( 'sme_user-email', 'getUserEmail_func' );

それをテストしました、そしてそれは働いています。

12
Robert hue