非公開固定ページ・投稿を直接表示した時の404.phpの内容を変更する
非公開に設定した投稿や固定ページを表示すると404.phpが表示されます。
他にも下書き投稿、予約投稿なども404.phpが表示されます。
404.phpで「投稿がありません」と表示されるのを、投稿のステータスに合わせて表示をカスタマイズしました。
特に「非公開」記事の場合は、ログインが必要なことを表示して、ログインページにリンクしリダイレクト先に該当の記事のURLを設定しました。
記事のIDと記事のステータスを返します。
function.php
記事のステータスに合わせた表示の分岐
404.php
※参考にさせて頂きました。
404.php のカスタマイズ
他にも下書き投稿、予約投稿なども404.phpが表示されます。
404.phpで「投稿がありません」と表示されるのを、投稿のステータスに合わせて表示をカスタマイズしました。
特に「非公開」記事の場合は、ログインが必要なことを表示して、ログインページにリンクしリダイレクト先に該当の記事のURLを設定しました。
記事のIDと記事のステータスを返します。
function.php
//非公開記事の404表示用 function my_get_404_status( ) { global $wp_query; if ( is_404() ) { if ( $wp_query->found_posts == 0 ) { return false; } /* 固定ページ */ if( isset( $wp_query->queried_object->post_status ) ) { return array($wp_query->queried_object->ID,$wp_query->queried_object->post_status); } /* 投稿 */ if ( isset( $wp_query->request ) ) { $id = $wpdb->get_var( $wp_query->request ); return array($id,get_post_status( $id )); } } }
記事のステータスに合わせた表示の分岐
404.php
<?php $my_status_html = '<h3>%1$s</h3>'; if ( list($postid,$status)= my_get_404_status() ) : switch( $status ) : case( 'draft'): printf( $my_status_html, 'この投稿は、草稿です。公開していません' ); break; case( 'pending'): printf( $my_status_html, 'この投稿は、レビュー待ちです。公開していません' ); break; case( 'future'): printf( $my_status_html, 'この投稿は、近日公開予定です' ); break; case( 'private'): printf( $my_status_html, 'この投稿は、非公開です。ログインしてください。' ); echo '<p>この記事は<a href="'. get_option('siteurl') .'/wp-login.php?redirect_to='. get_permalink($postid) .'">ログイン</a>しなければ表示できない会員のみ閲覧可能な記事です。</p>'; break; endswitch; ?> <?php else: ?> <p>お探しのページが見あたりません。<br />申し訳ございませんが、記事が削除されたかURLが変更になった可能性があります。</p> <?php endif; ?>
※参考にさせて頂きました。
404.php のカスタマイズ
RECENT POSTS
SEARCH