Cómo crear un shortcode con 1 parámetro (atts)

21 dic 2014, 21:14:01
Vistas: 72.5K
Votos: 17

Estoy teniendo problemas para hacer funcionar un shortcode con 1 atributo.

Aquí está mi shortcode [sme_user-email userID="2"]

Aquí están mis scripts - ninguno de ellos funciona.

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');

Este funciona -- pero no quiero hardcodear el ID del usuario. Esperaba poder hacerlo de forma dinámica

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

0
Todas las respuestas a la pregunta 1
2
28

Aquí te mostramos cómo deberías crear el shortcode.

Primero tendrás que definir el elemento $atts en get_userdata porque $atts es un array. Además, creo que también hay algunos problemas con los nombres de atributos en mayúsculas, por lo que deberías usar el atributo en minúsculas. Así que en lugar de userID, usa userid.

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

Lo he probado y está funcionando.

21 dic 2014 21:31:24
Comentarios

Increíble @Roberthue... LAS MAYÚSCULAS son un problema. Nunca lo habría descubierto.

tammy tammy
21 dic 2014 21:40:03

A veces lo son. Por eso generalmente evito las mayúsculas y combinaciones de guiones -, como usaste en el nombre del shortcode sme_user-email. Usaste un guión y un guión bajo. Manténlo uniforme y enfrentarás menos problemas.

Robert hue Robert hue
21 dic 2014 21:44:22