web関連

パスワード保護がかかってる記事を条件分岐させる方法

パスワード保護がかかってる記事を条件分岐させる方法

記事一覧で、パスワード保護がかかってる記事を少しわかりやすいようにデザイン付けしようとしたけど、どうすれば条件分岐できるか調べたときの備忘録

投稿一覧でパスワードがかかっているかどうかチェック

// ○パスワードを記事が持っているかどうかで分岐
<?php $pass = $post->post_password;
if($pass !== ''): ?>
	// パスワードかかってる
<?php else: ?>
	// パスワードかかってない
<?php endif; ?>

サブループの「WP_Query」を使って記事一覧を出力したんだけど、WP_Queryオブジェクト内の[“post_password(パスワードが格納されている)”]にパスワードが入ってるか入ってないかで条件分岐させることにした。

WP_Queryオブジェクト内にパスワードを悪戦苦闘して、グローバル変数$postを使ったら「post_password」の値を取得できた。$postについては色々な情報が入っている程度の認識しかありません。

以前使った、「post_password_required()」で条件分岐できるかどうか試したんだけど駄目だった…

「post_password_required()」って一度パスワード入れてしまうとパスワードがかかっていてもかかっていないって判断されるようになっちゃうので条件分岐として使えなかった

おまけ:WP_Queryのプロパティでパスワード付きかどうか判別できる

そもそも記事一覧を出力する前に、WP_Queryのプロパティで側で出力するしないの設定をかけられる

<?php
	$args = array(
		'post_type' => 'post',
		// パスワード保護されたページのみ出力(false,null(初期値:全部出力)が設定できる)
		'has_password' => true,
		// 特定のパスワード(123abc)で保護されている記事のみ出力
		'post_password' => '123abc'
	);
?>

参考

▼関数リファレンス/WP Query
https://goo.gl/xTRwyi

ほとんど使わないだろうけど一応メモ
需要がないのか全然記事が見つからないから、「var_dump()」で中身見て試行錯誤の末「$post->post_password;」で条件分岐できるようになった。 配列の中身の取得の仕方からよくわからなかった…