Echo ID utente degli utenti in una tabella separata | WordPress Affiliate Platform

26 giu 2012, 23:16:15
Visualizzazioni: 348
Voti: 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>';
}

Sto utilizzando un plugin chiamato WordPress Affiliate Platform, che crea (penso) gli utenti in una tabella separata rispetto agli utenti standard di WordPress per non mischiare gli utenti affiliati con quelli di WP.

Vorrei recuperare l'ID utente dell'affiliato loggato per poter mostrare l'URL di referral della pagina corrente dell'affiliato:

  • Esempio di URL di referral per tutto il sito: http://domain.com/?ap_id=AMEEKER
  • Esempio di URL di referral specifico per una pagina: http://domain.com/myproduct?ap_id=AMEEKER

Il plugin stesso non offre questa opzione, ma si limita a dare le istruzioni per dire agli affiliati di incollare ?ap_id=AMEEKER dopo l'URL della pagina corrente per ottenere il loro link di affiliazione. Va bene, ma è un po' tedioso e può esporre gli affiliati a errori che non sono veramente colpa loro.

Sono sicuro che ci sia un modo per semplicemente visualizzare l'URL della pagina corrente, seguito da ?ap_id= e dall'ID utente dell'affiliato, ma ho difficoltà a capire come recuperare l'ID utente dell'affiliato.

Il plugin stesso lo fa trasformando xxxx nell'ID utente in qualche modo.

domain.com/myproduct?ap_id=XXXX

Ho incollato sopra del codice dalla dashboard dell'affiliato, un'area dove il plugin EFFETTIVAMENTE recupera l'ID dell'affiliato e lo mostra dinamicamente per l'utente loggato. Guardando quel template nei file del plugin, ho trovato quello che PENSO sia il codice che trasforma dinamicamente XXXX nell'effettivo ID affiliato ma non so cosa farci, o se questo da solo possa aiutarmi a ottenere quello che voglio. Voglio dire, posso guardarlo e VAGAMENTE capire cosa fa, ma non abbastanza per sapere se o cosa posso farci ora!

(non sono un programmatore, più che altro un smanettone).

Ho chiesto all'autore del plugin, che sembra dare un ottimo supporto, ma questa funzionalità è stata richiesta diverse volte sul loro sito e la risposta è sempre la stessa. Nessun rancore, ma vorrei vedere se si può fare.

Ogni aiuto sarebbe apprezzato.

2
Commenti

In base a quel codice, immagino sia nella variabile $ad_code. Dove/come viene costruita?

curtismchale curtismchale
26 giu 2012 23:19:11

Non lo so. :-( Non sto cercando di essere stupido, ma davvero non so dove guardare o cosa cercare.

angiemeeker angiemeeker
26 giu 2012 23:29:15
Tutte le risposte alla domanda 1
1

Dopo aver esaminato il codice del plugin, non sembra esserci un modo semplice per farlo.

Gli affiliati sono memorizzati in una tabella che non ha una relazione diretta con la tabella degli utenti di WordPress - questo significa che puoi avere utenti che non sono affiliati e puoi avere affiliati che non sono utenti. Ecco perché c'è una grande opzione "Importa utenti WP"... non è automatico.

Quando un affiliato effettua il login, c'è un codice che avvia automaticamente una sessione PHP, memorizza il loro ID affiliato come variabile di sessione e lo imposta anche come cookie in modo che possa essere recuperato in seguito:

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))
{
    // questo imposta la sessione e logga l'utente
    if(!isset($_SESSION)){@session_start();}
    // questo imposta le variabili nella sessione
    $_SESSION['user_id']= $userid;
    setcookie("user_id", $userid, time()+60*60*6, "/"); //imposta il cookie per 6 ore

    // ... e così via
}

Il plugin, a questo punto, non utilizza affatto il sistema di gestione utenti di WordPress.

Riepilogo

Gli ID affiliato che vedi non sono la stessa cosa degli username nel sistema, e non c'è modo di eseguire una query per estrarre un username/id dalla tabella utenti di WordPress basandosi su un ID affiliato (o viceversa) perché non ci sono dati che mettono in relazione i due da nessuna parte nel sistema.


Ottenere l'ID Affiliato

Se tutto quello che vuoi fare è ottenere l'ID affiliato se l'utente è loggato, allora tutto quello che devi fare è controllare la raccolta dei cookie o la sessione corrente:

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;
}

Se l'utente è loggato, sia la variabile di sessione che il cookie dovrebbero essere impostati. Questa funzione restituirà quindi l'ID dell'utente (il controllo del cookie è solo un fallback nel caso succeda qualcosa alle sessioni lato server... ad esempio un riavvio del server mentre qualcuno sta usando il sito). Se l'utente non è loggato, la funzione restituirà false.

Una volta che hai il loro ID, puoi usare altre funzioni incluse nel plugin per ottenere qualsiasi informazione ti serva.

26 giu 2012 23:58:57
Commenti

Sapevo che erano due gruppi diversi di utenti. Voglio visualizzare l'ID dell'affiliato se l'affiliato è loggato, senza considerare gli utenti WP. Sto visualizzando contenuti altrove SE l'affiliato è loggato usando questo: 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 ""; }

Se l'affiliato fa il login, rimane loggato in tutto il sito.

angiemeeker angiemeeker
27 giu 2012 00:08:09