Recuperare e visualizzare dati da una tabella personalizzata del database nell'area amministrativa?

11 gen 2015, 00:21:00
Visualizzazioni: 23.9K
Voti: 2

Ho un problema con un plugin che sto sviluppando e mi chiedo se qualcuno può fare luce sulla situazione, dato che molte, MOLTE ricerche non hanno portato ad alcun aiuto. :-/

In pratica, il mio plugin crea diverse entità personalizzate nel database di WordPress, che funzionano tutte bene. Ho aggiunto una funzione shortcode per inserire un form in una pagina per inviare informazioni, che funziona anch'essa correttamente.

Il mio problema è quando voglio recuperare i dati da queste entità personalizzate e visualizzarli nella sezione amministrativa di WordPress (sia in un widget della dashboard che in una pagina plugin personalizzata), non funziona. Punto.

La mia funzione di esempio per recuperare i dati è la seguente:

function showApplicants(){
global $wpdb;

$appTable = $wpdb->prefix . "applications";
    $query = $wpdb->prepare("SELECT * FROM $appTable WHERE %d >= '0'", RID);
    $applications = $wpdb->get_results($query);

    foreach ( $applications as $application ) 
{
echo $application->title . " " . $application->app_firstName . " " . $application->app_surName . "<br/>";
}

}

Stranamente, quando questo codice viene inserito in una pagina fuori dall'area amministrativa di WordPress (ad esempio, una pagina creata con WordPress, tramite una funzione shortcode che semplicemente genera questo codice, o su una pagina che creo e aggiungo io stesso con questo codice nel template), funziona! Recupera le informazioni corrette e le visualizza come previsto.

Se lo aggiungo a un widget della dashboard, nessun risultato. Se lo aggiungo a una pagina personalizzata all'interno della sezione amministrativa, di nuovo, nessun risultato.

Sono bloccato. Qualche consiglio?

P.S. - Per evitare confusione, la variabile globale $wpdb è dichiarata più in alto nel codice, quindi non c'è bisogno di dichiararla di nuovo (anche se ho provato a dichiararla di nuovo all'interno della funzione e comunque non ha funzionato).

Qualsiasi aiuto sarebbe molto apprezzato!

Grazie mille!

2
Commenti

$wpdb->prepare() richiede almeno due argomenti, e sì, hai bisogno di un global $wpdb nella tua funzione, e quella funzione deve essere chiamata dopo che la variabile è stata impostata da WordPress.

fuxia fuxia
11 gen 2015 00:39:18

Ahh, risolto! Codice completo per chiunque altro abbia questo problema qui sotto! Grazie toscho!

prettyfly prettyfly
11 gen 2015 01:08:38
Tutte le risposte alla domanda 1
0

Codice funzionante per aggiungere un widget alla dashboard di WordPress con informazioni da un database personalizzato:

/**
 * Aggiunge un widget delle applicazioni alla dashboard.
 */
function addApplicationWidget() {
    wp_add_dashboard_widget(
                 'submitted_applications',         
                 'Applicazioni Inviate',        
                 'showApplicants' 
        );  
}
add_action( 'wp_dashboard_setup', 'addApplicationWidget' );

function showApplicants() {
    global $wpdb;

    $appTable = $wpdb->prefix . "applications";
    $query = $wpdb->prepare("SELECT * FROM $appTable WHERE %d >= '0'", RID);
    $applications = $wpdb->get_results($query);

    foreach ( $applications as $application ) {
        echo $application->title . " " . $application->app_firstName . " " . $application->app_surName . "<br/>";
    }
}
11 gen 2015 01:09:31