あるサイトで、cookieの有無で表示を切り替えるようにしています。
公開・非公開に関わらずcookieを取得していたため、非公開の記事でプレビュー時にcookie取得し、表示がおかしくなってバグのように見えてしまっていました。
そこで公開記事の場合のみcookieを取得するようにしたときのメモ。
//flgにあるcookieの値を取得
$cookie = $_COOKIE["flg"];
//cookieの値はスラッグなので、スラッグから記事IDを取得
$post = get_page_by_path( $cookie, 'OBJECT', 'post' );
$post_id = $post->ID;
//cookieのスラグの記事ステータスが公開の場合はcookieをセットする
if (get_post_status($post_id) === 'publish') {
//公開済
if ($cookie <> ""){
//取得したcookieを$item_idにセット
$item_id = $cookie;
} else {
//cookieの値がない場合は何もしない
}
} else {
//非公開・下書き(公開以外のステータス)の場合はcookieをセットしない
}
WordPressでスラッグ名からIDを取得する方法
WordPress記事の公開状態・下書き状態などのステータス判定方法