私はそのように機能するワークフローを手に入れたいです。
これが可能かどうか誰かが知っていますか?
トムの助けのおかげで、ここに私がやって来たものがあります。これは、投稿をパスワードで保護するための組み込み機能を使用するため、訪問者はホームページでパスワードを入力するだけでよく、その後投稿に移動し、パスワードを再入力することなく投稿のコンテンツを直接表示できます。
ホームページ上:
<form method="post" action="">
<input type="password" name="passwordfield">
<input type="hidden" name="homepagepassword" value="1">
<input type="submit" value="Submit">
</form>
functions.php
では(もちろんこれはプラグインに変換できます):
if(isset($_POST['homepagepassword'])){
global $wpdb;
$post_password = $_POST['passwordfield'];
$post_id = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_password = %d", $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();
}
はい。ただし、パスワードが投稿にどのように対応するかの詳細を保持する必要があります。
そう:
ホームページ上:
<form method="post" action="">
<input type="password" name="passwordfield">
<input type="hidden" name="homepagepassword" value="1">
<input type="submit" value="Submit">
</form>
Functions.phpに配置する(存在しない場合はファイルを作成し、先頭に<?php
を追加する)またはプラグインファイルに配置する:
function doPasswordStuff(){
if(isset($_POST['homepagepassword'])){
$pass = $_POST['passwordfield'];
$q = new WP_Query( array( 'meta_key' => 'password_value', 'meta_value' => $pass));
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');
キー/名前password_value
と値をパスワードにして、カスタムフィールドをあなたの投稿に追加してください。
このステップをスキップして、Wordpressが投稿を直接ロックするために使用するパスワードを使用する場合は、$wpdb
とSQLクエリを使用し、事前に確認したパスワードをハッシュする必要があります。
edit: 'init'フックを使うようにこれを更新しました。必要ならば、functions.phpの代わりにプラグインファイルにコードを入れることができます。これはテーマに依存しません。 (あなたはまだどこかにフォームマークアップを置く必要があるでしょうが)。
代わりにプラグインを使います。プラグインはまだパスワードを投稿と共有し、クッキーを適切に設定して、パスワードを入力しないとページにアクセスできない可能性があります。
手動マッピングがあるため、どのパスワードがどの投稿に属しているかの検索は、このようなマッピングがないと非常に高コストになります。ホームページのような中心的な場所では役に立ちません。
各投稿に対して作成したパスワードは一意になりますか。そうでない場合、どの投稿をユーザーが探しているのかをどのように識別できるでしょうか。
あなたがそれぞれのパスワードをユニークに保っていると仮定すると、私はパスワードをpost-metaとして保存するでしょう。パスワードの入力/保存を可能にする カスタムメタボックス を作成できます。
次に、ユーザーがホームページでパスワードを入力すると、