パスワードで保護されたエントリをサポートするカスタム投稿タイプがあります。新しいWP_Queryオブジェクトを使用するカスタムループでは、パスワード保護された投稿を結果から除外したいと考えています。これを行うために必要な議論は何ですか?私は最新のトランクバージョンのWordPress 3.2.1を使用しています。WordPressループでパスワードで保護された投稿を除外する方法
答えて
WP_Queryのpost_status argumentを見ましたか?
"保護された"は除外するのが良い候補のようです。
編集:あなたが望むものを達成するためにwhere句を変更する必要がありますようさて、それはそう:
// Create a new filtering function that will add our where clause to the query
function filter_where($where = '') {
// exclude password protected
$where .= " AND post_password = ''";
return $where;
}
if (!is_single()) { add_filter('posts_where', 'filter_where'); }
$query = new WP_Query($query_string);
remove_filter('posts_where', 'filter_where');
についての演奏のビットの後、私はposts_whereフィルタAを見つけました私がやりたがっているようなものではないので、私は別の方法を思いついた。カスタムポストタイプのために添付した 'save_post'アクションの一環として、次のロジックを追加しました。
$visibility = isset($_POST['visibility']) ? $_POST['visibility'] : '';
$protected = get_option('__protected_posts', array());
if ($visibility === 'password' && !in_array($post->ID, $protected)) {
array_push($protected, $post->ID);
}
if ($visibility === 'public' && in_array($post->ID, $protected)) {
$i = array_search($post->ID, $protected);
unset($protected[$i]);
}
update_option('__protected_posts', $protected);
これは、投稿がパスワードで保護されているオプションテーブルに投稿IDの配列を保持しています。次にカスタムクエリでは、単に配列をpost__not_in
オプションの一部として渡しました。
$query = new WP_Query(array(
'post_type' => 'my_custom_post_type',
'post__not_in' => get_option('__protected_posts'),
));
こうすることで、アーカイブページから保護された投稿を除外できますが、パスワードで保護されたページにアクセスしてパスワードを入力することができます。
これは私のために働きました。私はget_postsを使っていたので、これは本当に仕事を終わらせる最も簡単な方法でした。 –
私は本当にケビンのアプローチのように、私は少しそれを調整する:
// Create a new filtering function that will add our where clause to the query
function my_password_post_filter($where = '') {
// Make sure this only applies to loops/feeds on the frontend
if (!is_single() && !is_admin()) {
// exclude password protected
$where .= " AND post_password = ''";
}
return $where;
}
add_filter('posts_where', 'my_password_post_filter');
これは私にとって素晴らしい仕事でした、Peterに感謝します。 –
ありがとう、@ピーターチェスター、私はまた、次の投稿と前の投稿のリンク(私の答えを参照)のためにこの除外を追加しました。 – Nelu
これを適用して、単一のループで保護された投稿を渡す方法はありますか? –
チェスターの答え@Peterに加えて:あなたはまた、Previous Post
とNext Post
からパスワードで保護された記事を除外したい場合があり
をあなたの投稿ページの一番下にそれらがある場合は、リンクをクリックします。
これを行うには、除外をget_previous_post_where
フックとget_next_post_where
フックに追加できます。
私は同じことを探していました。しかし、私はあなたがここで
$args = [
'post_type' => [ 'post', 'page' ],
'posts_per_page' => 3,
'post__not_in' => get_option('sticky_posts'),
'has_password' => FALSE
];
...そして、非常に簡単な解決策を見つけ、それはちょうどので、コードは以下のようになりますクエリ
$args
に'has_password' => false
引数を追加することである線でWP_Queryドキュメントラインをすることができます読みます私はSticky
とPassword Protected
の投稿を除外しました。
SQLの使用を示唆するすべての回答は危険であり、WordPress 3.9以降では使用しないでください。これは、パスワードで保護された投稿を除外するために組み込まれています。 – sauv0168
- 1. ワードプレスのページからパスワードで保護された投稿を除外する
- 2. あなたの投稿をデフォルトでパスワードで保護する
- 3. wordpressでタグ付きの投稿を除外する方法は?
- 4. 投稿フォームを保護する方法
- 5. Wordpressループから特定の投稿を除外する
- 6. パスワードで保護されたcocoaデスクトップアプリケーションを作成する方法
- 7. ループでwordpress投稿を取得する
- 8. アンドロイドのpdfからパスワードで保護された/パスワードを削除するには?
- 9. Pythonでパスワードを保護する方法
- 10. パスワードで保護されたアンドロイドアプリケーションの作成方法
- 11. パスワードで保護されたアプリケーション
- 12. パスワードで保護されたAndroidアプリ
- 13. パスワードで保護されたSQL Serverバックアップ
- 14. iTextSharpパスワードで保護されたPDF
- 15. パスワード保護されたブックにApplication.Runを使用する方法?
- 16. Webアプリケーション - パスワードで保護されたディレクトリで保護されていますか?
- 17. 投稿された値の配列をループする方法
- 18. パスワードで保護されたファイルをC#で作成する方法
- 19. Javaで圧縮されたExcelファイルをパスワードで保護する方法は?
- 20. Ruby経由でパスワードで保護されたファイルを解凍する方法
- 21. WordPressのパスワードで保護されたページからのログインを覚えている
- 22. パスワードで保護されたファイルを保存するマクロ
- 23. プログラムでパスワードで保護されたWebサイトにアクセスする方法は?
- 24. すべてのパスワードで保護されたWordpressページのシングルページのログイン画面
- 25. Delphi 2007のパスワードで保護された場所にファイルをダウンロードする方法
- 26. node.jsでパスワードで保護されたZIPファイルを生成する
- 27. Munin、apache、パスワード保護方法
- 28. レールでユーザ名とパスワードで保護されたリモートファイルを読む方法3
- 29. パスワードで保護されたExcelワークシートからデータを読み取る方法
- 30. 更新されたパスワードで保護されたC#のリンクワードドキュメント
WordPress 3.9以来、あなたが使うことができる 'has_password'クエリargもあります。 –