2. 9. 2 サイト閲覧画面のカスタマイズ(2)その他

パスワード保護の非表示, 404 無条件リダイレクト, ヘッダー表示削除

パスワード保護の非表示

 パスワード保護のページを作るより、会員制サイトを作る方が良いと思います。
 ページ毎にパスワードを入れなければいけませんし、投稿にパスワードを設定してもその投稿の添付ファイルのページにパスワード保護はかかりません。
 パスワード保護のページをを非表示にします。

コード

// --------------------------------
// パスワード保護の非表示
// --------------------------------
if ( ! is_admin() ) {
    function hk_functions_site_pre_get_posts( $wp_query ) {
        $wp_query->set( 'has_password', false );
        return;
    }
    add_action( 'pre_get_posts', 'hk_functions_site_pre_get_posts' );
}

404 無条件リダイレクト

 次の場合にリダイレクトします。
(1)添付ファイルのページ
 ファイルをアップロードすると、添付ファイルのページが勝手に作成されてしまいます。セキュリティーの面からも好ましいとはいえず、404ページに飛ばします。
(2)タグのアーカイブ
 表に出す必要が無いタグもありますので、非表示(404リダイレクト)にしています。
(3)作成者のアーカイブ
 必要が無いので、非表示(404リダイレクト)にしています。
 なお、表示する場合は、ユーザー情報を修正していないとセキュリティーの問題があります。
(4)コメントフィード(RSS)
 コメントフィードは重要視していないので、非表示(404リダイレクト)にしています。
 自動で作成され、普段目にしないページですので表示するなら表示内容に気をつける必要があります。

コード

// --------------------------------
// 404 無条件リダイレクト
//   添付ファイルのページ
//   タグのアーカイブ
//   作成者のアーカイブ
//   コメントフィード(RSS)
// --------------------------------
function hk_functions_template_redirect() {
    if (( ! is_attachment() )
     && ( ! is_tag() )
     && ( ! is_author() )
     && ( ! is_comment_feed() ))    return;
    // 404 リダイレクト
    global $wp_query;
    $wp_query->set_404();
    include( TEMPLATEPATH.'/404.php' );
    exit;
}
add_action( 'template_redirect', 'hk_functions_template_redirect' );

ソースコードのヘッダー表示削除

 HTMLソースコードにいろいろと記述されていて、ソースコードが見づらいので必要最小限にします。また、意図せざる外部への情報提供を制限します。
(1) 'feed_links':投稿RSSとコメントRSS用リンク
 投稿RSS用リンクは必要。
 コメントRSS用リンクは不要。
 RSS用リンクをいったん削除します。投稿RSS用リンクだけを復活。
(2) 'feed_links_extra':カテゴリなどのRSS用リンク
 不要。
(3) 'rsd_link':Really Simple Discovery用リンク
 外部サービスにブログ情報を提供するようです。
 不要。
(4) 'wlwmanifest_link':Windows Live Writer用リンク
 マイクロソフトのソフトのようです。
 不要。
(5) 'adjacent_posts_rel_link_wp_head':前後リンク
 検索エンジンに情報提供するのでしょうか。
 不要。
(6) 'wp_generator':WordPressを表示
 あってもなくても・・・。
(7) 'rel_canonical':サイト内に重複ページがある場合?
 不要。
(8) 'wp_shortlink_wp_head':短縮URLのlinkタグを表示する?
 不要。
(9) 絵文字 JavaScript, css
 不要。

コード

// --------------------------------
// ソースコード
//   ヘッダー表示削除
// --------------------------------
// RSS(FEED)リンク
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Really Simple Discovery用リンク
remove_action( 'wp_head', 'rsd_link' );
// Windows Live Writer用リンク
remove_action( 'wp_head', 'wlwmanifest_link' );
// 前後の投稿・ページへのリンク
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
// GENERATOR 表示
remove_action( 'wp_head', 'wp_generator' );
// CANONICAL リンク
remove_action( 'wp_head', 'rel_canonical' );
// SHORTLINK
remove_action( 'wp_head', 'wp_shortlink_wp_head');
// 絵文字 JavaScript, css
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
// --------------------------------
// ソースコード ヘッダー表示
//   RSS(FEED)リンク復活
// --------------------------------
function hk_functions_feed_links() {
    echo '<link rel="alternate" type="'.feed_content_type().'" title="'.esc_attr( get_bloginfo('name') ).' &raquo; フィード'.'" href="'.esc_url( get_feed_link() ).'" />'."\n";
    return;
}
add_action( 'wp_head', 'hk_functions_feed_links', 2 );

 このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。

更新日:2016/03/23
掲載日:2015/11/12