デフォルトでは、WordPressは私が欲しくない、または必要としないページの全配列をアーカイブします - アーカイブ、著者、ブログ、毎月、最近の投稿、カテゴリ、コメント、添付ファイル、分類、検索、検索結果、そしておそらく私は他逃した。
ほとんどの場合、私は通常のウェブサイトを構築していますが、かなり静的なページ以外は何も必要ありません。他のすべてのページを削除する方法これを行うプラグインはありますか? .htaccessに1ダースのリダイレクトを設定する必要がありますか?検索しようとしましたが、ページの一部を非表示にする方法、またはサイトマップをカスタマイズして検索を非表示にする方法がわかります。しかし、私はそれらのページがまったく欲しくないので、直接URLを入力してもうまくいきません。
parse_query
アクションを使って、ページや管理者以外のものをホームにリダイレクトできます。
function wpa_parse_query( $query ){
if( ! is_admin() && ! $query->is_page() ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'parse_query', 'wpa_parse_query' );
管理画面でもページへのクエリでもない場合は、リダイレクトされます。 Codexの コンディショナルタグ ページの下に、これによって削除されるすべての種類のページが表示されます。
Joost de Valkの WordPress SEOプラグイン は、全部ではないにしても、あなたが言及しているアーカイブのほとんどを無効にすることができる。
プラグインを追加しなくても、別の小さなスクリプトを使用できます。 here という投稿があり、テーマのindex.phpに追加するコードは次のとおりです。
if(is_archive()) {
// force 404
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include("404.php");
die;
}
あなたがそれが有用であることを願ってください。
疑問に思っている人のために、私は.htaccess 301リダイレクトを使用することになりました。
# Redirect useless pages
Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/portfolio/.*$ /gallery/
RedirectMatch 301 ^/author/.*$ /
RedirectMatch 301 ^/category/.*$ /
RedirectMatch 301 ^/tag/.*$ /
RedirectMatch 301 ^/20.*$ /
ブログ投稿アーカイブ^/20.*$
は理想的ではありませんが、今のところやらなければならないでしょう。また、他のどのページを見逃していたかもわかりません。
Template_redirectフックを使っても達成できます。
アーカイブページの種類ごとに確認したり、それらをまとめて無効にしたりできます。
- 404エラーを返すか、別のページにリダイレクトします。404アプローチが好ましい -
functions.php
内:
/* Disable archives pages */
add_action('template_redirect', 'my_disable_archives_function');
function my_disable_archives_function()
{
/* Conditional checks examples:
is_category()
is_tag()
is_date()
is_author()
is_tax()
is_search() ... */
// Return a 404 for all archive types, except the my_custom_post_type archive.
$post_types = array('my_custom_post_type');
if ( (is_archive() && !is_post_type_archive( $post_types )) )
{
global $wp_query;
$wp_query->set_404();
}
}