Eroare $wpdb - Call to a member function get_results() on a non-object în WordPress

4 nov. 2014, 17:11:16
Vizualizări: 15.3K
Voturi: 2

Am această eroare "Call to a member function get_results() on a non-object in" din următorul cod:

require_once($_SERVER['DOCUMENT_ROOT'] . $folder . '/wp-config.php');
require_once($_SERVER['DOCUMENT_ROOT'] .  $folder . '/wp-load.php');
if (!$wpdb) {
$wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
} else {
    global $wpdb;
}

function vendorDatails( $param)
{
    if ((substr ($param, 0, 0)) == '#')
    {
        substr($param, 1);
    }

    $order_ids = $wpdb->get_results( 
                                    "
                                     SELECT DISTINCT vendor_id 
                                     FROM $wpdb->lqrhxf_pv_commission 
                                     WHERE order_id = %d
                                    ",
                                        $param
                                );

    foreach ( $order_ids as $order_id )
    {
        echo $order_id->vendor_id;
    }
}

Parametrii bazei de date sunt încărcați cu succes dar primesc eroarea pe linia de mai sus când folosesc variabila $wpdb:

 $order_ids = $wpdb->get_results( 
0
Toate răspunsurile la întrebare 2
0

Aceasta este o problemă de domeniu de vizibilitate pentru variabile PHP, nu există nicio variabilă $wpdb definită în funcția ta.

Adaugă

global $wpdb;

înainte de a încerca să folosești obiectul $wpdb.

4 nov. 2014 17:24:59
1

Când dorești să utilizezi funcționalitățile WordPress în afara mediului WordPress, poți folosi:

include_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

Apoi vei putea accesa funcționalitățile WordPress. Verifică acest lucru. Dacă vrei să accesezi doar funcțiile de bază de date, folosește:

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php' );

if (!$wpdb) {
    $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
} else {
    global $wpdb;
}
27 iun. 2019 14:53:17
Comentarii

Nu este al doilea exact ceea ce OP a făcut deja? (cu excepția unui .$folder. suplimentar în cale). Apropo, poți folosi butonul {} în editor pentru a formata liniile ca cod (ceea ce înseamnă doar indentarea lor cu patru spații)

Rup Rup
27 iun. 2019 15:40:30