Как создать шорткод с 1 параметром (atts)

21 дек. 2014 г., 21:14:01
Просмотры: 72.5K
Голосов: 17

У меня возникли проблемы с созданием шорткода с 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');

0
Все ответы на вопрос 1
2
28

Вот как следует создавать шорткод.

Сначала вам нужно определить элемент $atts в get_userdata, потому что $atts — это массив. Также, думаю, есть проблемы с именами атрибутов в верхнем регистре, поэтому следует использовать атрибут в нижнем регистре. То есть вместо userID используйте userid.

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

Протестировал — всё работает.

21 дек. 2014 г. 21:31:24
Комментарии

Удивительно, @Roberthue... ПРОБЛЕМА В ВЕРХНЕМ РЕГИСТРЕ. Я бы никогда не догадался об этом.

tammy tammy
21 дек. 2014 г. 21:40:03

Иногда так и есть. Вот почему обычно избегают верхнего регистра и сочетания тире -, как вы использовали в имени шорткода sme_user-email. Вы использовали одно тире и одно подчеркивание. Соблюдайте единообразие, и у вас будет меньше проблем.

Robert hue Robert hue
21 дек. 2014 г. 21:44:22