当前位置: 首页 > 知识库问答 >
问题:

WordPress-致命错误:调用非对象$wpdb上的成员函数get_var()

蒯翰墨
2023-03-14

[解决方案由s_ha_dumhttp://wordpress.stackexchange.com]

我试图根据在帖子设置中输入的密码将用户引导到某个帖子。我几乎有工作代码:

表格第页:

<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-

如果有人能看一眼,我会非常感激:)谢谢!

共有1个答案

高吉星
2023-03-14

在此之前全球化$wpdb

global$wpdb

$post_id=$wpdb-

最好的做法是使用小写的表/列名

然后像这样重定向

<代码>

wp_redirect(the_permalink() );

<代码>

还可以使用http状态代码作为wp_redirect()的第二个参数。这可能有助于使用http状态代码

 类似资料: