Wordpress - Schwerwiegender Fehler: Rufen Sie eine Mitgliedsfunktion get_var () auf einem Nicht-Objekt $ wpdb auf

[Lösung von s_ha_dum auf http://wordpress.stackexchange.com]

Ich versuche, Benutzer auf der Grundlage eines in den Beitragseinstellungen eingegebenen Passworts zu einem bestimmten Beitrag zu leiten. Ich habe fast Arbeitscode:

Formular auf Seite:

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

Code in 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');

Es wird jedoch ein schwerwiegender Fehler angezeigt (schwerwiegender Fehler: Aufrufen einer Mitgliedsfunktion get_var () für ein Nicht-Objekt) in dieser Zeile:

$ post_id = $ wpdb-> get_var ($ wpdb-> prepare ("ID AUS $ wpdb AUSWÄHLEN-> posts WHERE post_password =% d", $ post_password));

Wäre echt dankbar wenn sich jemand umsehen würde :) danke!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage