[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-> prepare( "SELECT ID FROM $ wpdb-> posts WHERE post_password =%d"、$ post_password));
誰かが見てくれたら本当に感謝します:)ありがとう!