Mostrar el ID de usuario de los usuarios en una tabla separada

26 jun 2012, 23:16:15
Vistas: 348
Votos: 1
{   
    $ad_code = str_replace("xxxx",$_SESSION['user_id'],$resultset->description);
    $ad_code = str_replace("XXXX",$_SESSION['user_id'],$ad_code);
    echo '<tr>';
    echo '<td class="col2"><strong>'.$resultset->name.'</strong></td>';
    echo '<td><textarea cols=65 rows=5>';
    echo $ad_code;
    echo "</textarea></td>";                
    echo '</tr>';
}

Estoy usando un plugin llamado WordPress Affiliate Platform, que creó (creo) usuarios en una tabla separada de los usuarios típicos de WP para no mezclar usuarios afiliados con usuarios de WordPress.

Me gustaría recuperar el ID de usuario del afiliado que ha iniciado sesión para poder mostrar la URL de referencia actual de la página del afiliado:

  • Ejemplo de URL de referencia para todo el sitio: http://dominio.com/?ap_id=AMEEKER
  • Ejemplo de URL de referencia específica de página: http://dominio.com/miproducto?ap_id=AMEEKER

El plugin en sí no ofrece esa opción, solo da instrucciones para que los afiliados peguen ?ap_id=AMEEKER después de la URL actual para obtener su enlace de afiliado. Eso está bien, pero es un poco tedioso y puede generar errores que no son realmente culpa de los afiliados.

Estoy seguro de que hay una manera de mostrar dinámicamente la URL actual de la página, seguida de ?ap_id= y el ID de usuario del afiliado, pero tengo problemas para averiguar cómo recuperar el ID de usuario del afiliado.

El propio plugin lo hace transformando xxxx al ID de usuario de alguna manera.

dominio.com/miproducto?ap_id=XXXX

He pegado arriba algo de código del panel de control del afiliado, un área donde el plugin SÍ obtiene el ID del afiliado y lo muestra dinámicamente para el usuario que ha iniciado sesión. Mirando esa plantilla en los archivos del plugin, encontré lo que CREO que es el código que está transformando dinámicamente XXXX en el ID real del afiliado, pero no sé qué hacer con esto, o si esto solo puede ayudarme a obtener lo que quiero. Quiero decir, puedo mirarlo y ENTENDER un poco lo que está haciendo, pero no lo suficiente como para saber si o qué puedo hacer con esto ahora.

(no soy programador, más bien un aficionado).

Le pregunté al autor del plugin, que parece dar muy buen soporte, pero esta característica se ha solicitado varias veces en su sitio y su respuesta es siempre la misma. Sin resentimientos, pero me gustaría ver si se puede hacer.

Cualquier ayuda sería apreciada.

2
Comentarios

Basándome en ese código, supongo que está en la variable $ad_code. ¿Dónde/cómo construyen eso?

curtismchale curtismchale
26 jun 2012 23:19:11

No lo sé. :-( No estoy tratando de ser tonto, pero realmente no sé dónde buscar o incluso qué buscar.

angiemeeker angiemeeker
26 jun 2012 23:29:15
Todas las respuestas a la pregunta 1
1

Después de revisar el código del plugin, parece que no hay una manera fácil de hacer esto.

Los afiliados se almacenan en una tabla que no tiene relación directa con tu tabla de usuarios de WordPress - esto significa que puedes tener usuarios que no son afiliados y puedes tener afiliados que no son usuarios. Es por eso que hay una gran opción "Importar Usuarios de WP"... no es automático.

Cuando un afiliado inicia sesión, hay código que automáticamente inicia una sesión PHP, almacena su ID de afiliado como una variable de sesión, y también lo establece como una cookie para poder recuperarlo más tarde:

global $wpdb;
$affiliates_table_name = WP_AFF_AFFILIATES_TABLE;        
$result = $wpdb->get_row("SELECT * FROM $affiliates_table_name where refid='$userid'", OBJECT);
    
if($wp_hasher->CheckPassword($password, $result->pass))
{
    // esto establece la sesión y logea al usuario
    if(!isset($_SESSION)){@session_start();}
    // esto establece variables en la sesión
    $_SESSION['user_id']= $userid;
    setcookie("user_id", $userid, time()+60*60*6, "/"); //establece cookie por 6 horas

    // ... y así sucesivamente
}

El plugin, en este punto, no está usando para nada el sistema de gestión de usuarios de WordPress.

Resumen

Los IDs de afiliado que estás viendo no son lo mismo que los nombres de usuario en el sistema, y no hay manera de que puedas ejecutar una consulta para obtener un nombre de usuario/id de la tabla de usuarios de WordPress basado en un ID de afiliado (o viceversa) porque no hay datos que relacionen los dos en ningún lugar del sistema.


Obteniendo el ID de Afiliado

Si todo lo que quieres hacer es obtener el ID de afiliado si el usuario está logueado, entonces todo lo que necesitas hacer es mirar la colección de cookies o la sesión actual:

function get_current_affiliate_id() {
    $affiliate_id = false;

    if ( isset( $_SESSION ) && isset( $_SESSION['user_id'] ) )
        $affiliate_id = $_SESSION['user_id'];

    if ( ! $affiliate_id && isset( $_COOKIE['user_id'] ) )
        $affiliate_id = $_COOKIE['user_id'];

    return $affiliate_id;
}

Si el usuario está logueado, entonces tanto la variable de sesión como la cookie deberían estar establecidas. Esta función entonces retornará el ID del usuario (la verificación de la cookie es solo un respaldo por si algo le pasa a tus sesiones del lado del servidor... es decir, un reinicio del servidor mientras alguien está usando el sitio). Si el usuario no está logueado, la función retornará false.

Una vez que tengas su ID, puedes usar otras funciones que vienen con el plugin para obtener cualquier información que necesites.

26 jun 2012 23:58:57
Comentarios

Sabía que eran dos grupos diferentes de usuarios. Quiero mostrar el ID de afiliado si el afiliado ha iniciado sesión, sin prestar atención a los usuarios de WP. Estoy mostrando contenido en otro lugar SI el afiliado ha iniciado sesión usando esto: if(aff_main_check_security()) { add_action( 'genesis_before_content_sidebar_wrap', 'include_aff_info' ); function include_aff_info() { require(CHILD_DIR.'/aff_info.php'); }; } else { echo ""; }

Si el afiliado inicia sesión, permanece conectado en todo el sitio.

angiemeeker angiemeeker
27 jun 2012 00:08:09