WordPress的 - 致命错误:调用一个成员函数get_var()在非对象WPDB $(Word

2019-07-22 08:59发布

[上http://wordpress.stackexchange.com溶液s_ha_dum]

我试图引导用户根据在岗位设置中输入密码的一定职务。 我几乎工作的代码:

窗体页上:

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

代码的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');

但是我得到致命错误(致命错误:调用一个成员函数get_var()一个非对象)在这条线:

$ POST_ID = $ wpdb-> get_var($ wpdb->准备( “SELECT ID FROM $ wpdb->帖子WHERE post_password =%d”,$ post_password));

如果真的很感激,如果有人来看看:)谢谢!

Answer 1:

在此之前$全球化WPDB

global $wpdb

$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' );

此外,它是一个最好的做法是使用小写表/列名

然后重定向像这样

<?php if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); ?>

wp_redirect( the_permalink() );

<?php endif;?>

还可以使用HTTP状态代码作为第二个参数wp_redirect(),这可能是有益的HTTP状态码



文章来源: Wordpress - Fatal error: Call to a member function get_var() on a non-object $wpdb