Wordpress - Erro fatal: Chame para uma função de membro get_var () em um não-objeto $ wpdb

[Solução de s_ha_dum em http://wordpress.stackexchange.com]

Estou tentando direcionar usuários para uma determinada postagem com base em uma senha inserida nas configurações de postagem. Eu tenho quase código de trabalho:

Forma na página:

<form method="post" action="">
  <input type="password" name="passwordfield">
  <input type="hidden" name="homepagepassword" value="1">
  <input type="submit" value="Submit">
</form>

Código em functions.php

function doPasswordStuff(){
    if(isset($_POST['homepagepassword'])){
    $post_password = $_POST['passwordfield'];
    $post_id = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_password = %s", $post_password) );
    $q = new WP_Query( 'p=$post_id' );
    if($q->have_posts()){
        while($q->have_posts()){
            $q->the_post();
            wp_redirect(get_permalink());
            die();
        }
    } else {
        // oh dear, there isnt a post with this 'password', put a redirect to a fallback here
        wp_redirect('http://www.google.com');
        die();
    }
    wp_reset_query();
    }
}
add_action('init','doPasswordStuff');

No entanto, estou recebendo erro fatal (Erro fatal: chame para uma função de membro get_var () em um não-objeto) nesta linha:

$ post_id = $ wpdb-> get_var ($ wpdb-> prepare ("ID SELECCAO DE $ wpdb-> postagens WHERE post_password =% d", $ post_password));

Se realmente apreciaria se alguém iria dar uma olhada :) obrigado!

questionAnswers(1)

yourAnswerToTheQuestion