首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:调用非对象$wpdb上的成员函数$wpdb()

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

Stack Overflow用户
提问于 2013-03-21 13:22:50
回答 1查看 8.8K关注 0票数 3

dum on http://wordpress.stackexchange.com]

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

表格在页上:

代码语言:javascript
复制
<form method="post" action="">
  <input type="password" name="passwordfield">
  <input type="hidden" name="homepagepassword" value="1">
  <input type="submit" value="Submit">
</form>

functions.php中的代码

代码语言:javascript
复制
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->prepare)(“从$wpdb-> post_password =%d的帖子中选择ID”,$post_password );

如果真的希望有人能看一眼的话:)谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-21 13:35:00

在此之前将$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 STATUS CODES很有帮助

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15548816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档