web-dev-qa-db-ja.com

取得する PHP グローバル化された$ wpdbで致命的なエラーが発生しました。

私はこの機能を利用しようとしています。なぜPHPエラーが発生しているのかわかりません。私が理解できるのは、何らかの理由でテンプレートが$ wpdbにアクセスできないということだけです。この関数を含むfunctions.php(テーマフォルダ内)ファイルにどの行を配置する必要があるのか​​わかりません。私を助けてください!!

function submitWeightUpdate( $userid, $weight ) {
    global $wpdb;

    $result = $wpdb->insert( 'wp_weights', array( 'user_id' => $userid, 'current_weight' => $weight ), array( '%d', '%d' ) );

    if (empty($_POST['weight'])) {
        $return['error'] = true;
        $return['msg'] = 'You did not enter a weight.';
    }
    else {
        $return['error'] = false;
        $return['msg'] = 'You\'ve entered: ' . $weight . ' as your new weight.';
    }

    echo json_encode($return);
} 

私はまた、テーマをデフォルトのテーマに設定しようとしましたが、それでもまだうまくいかないので、どうしたらよいのかわかりません。

1
Brandon

グローバリゼーションを使用してすべてを正しく実行しました。エラーメッセージは、存在しない$ wpdbで関数を呼び出したことを伝えているだけです。

$ wpdbにあなたが興味を持っているオブジェクトが含まれていることを事前に確認してください。

if (is_object($wpdb) && is_a($wpdb, 'wpdb')) {
    $result = $wpdb->insert( 'wp_weights', array( 'user_id' => $userid, 'current_weight' => $weight ), array( '%d', '%d' ) );
}

あるいは、これをグローバルラインの下に追加して詳細を知ることができます。

global $wpdb;
var_dump($wpdb); // dump variable type and contents.

さらに試してみてください。

require_once( ABSPATH . 'wp-load.php' );
global $wpdb;

あなたはあなたが$ wpdbであなたが必要とするものを提供する準備ができているwordpressを持っていないかもしれません。

3
hakre

$ wpdbがあなたの特定の機能に到達したときにグローバル化されている可能性があります。 $ GLOBALSをチェックしてみて、それが$ wpdbのエントリがある場合は、$ global $ wpdb行を削除してください。あなたの機能の開始時に。

0
Ethan Seifert