Echo ID utente degli utenti in una tabella separata | WordPress Affiliate Platform
{
$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.

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.

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.
