カテゴリページをブログのホームページに作成する方法は?
-
16-10-2019 - |
質問
カテゴリページをブログのホームページとして使用したいと思います。それは可能ですか、どうすればできますか? .htaccesの書き換えルールでそれを試しましたが、それはうまくいきませんでした。
解決
アップデート
他のすべてのソリューションを排除するには、少なくとも1つが残っています。 template_redirect
:
function wpse121308_redirect_homepage() {
// Check for blog posts index
// NOT site front page,
// which would be is_front_page()
if ( is_home() ) {
wp_redirect( get_category_link( $id ) );
exit();
}
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );
適切なカテゴリを渡す必要があります $id
, 、 もちろん。
でリダイレクトすることの利点 template_redirect
2番目のリダイレクトではなく、1つのテンプレートロードが行われているということです 後 テンプレートのロード。
以前にさらに早くプロセスに接続できることに注意してください。 pre_get_posts
, 、それにより、クエリリクエスト全体を潜在的に保存する可能性があります。
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
元の答え
あなたがしたいことがブログ投稿インデックスに特定のカテゴリを表示することだけであれば、メインの単純なフィルターでそれを達成できます $wp_query
で pre_get_posts
:
function wpse1862_pre_get_posts( $query ) {
// Only modify the main query
// on the blog posts index page
if ( is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'category-slug-here' );
}
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );
変更したい場合 レンプレート, 、次に、2つのことのいずれかを実行できます。
- aを作成します
home.php
目的のマークアップで - 使用する
template_redirect
またhome_template
WordPressにあなたを含めるように強制するcategory.php
レンプレート。
編集
そして、ブログ投稿インデックスURLを次のようにする必要がある場合:
www.example.com/main
そうすれば、できます 使う 静的フロントページ, 、そして、ブログ投稿インデックスとして「Main」と呼ばれる静的ページを割り当てます。
そして、これがあなたの目的である場合:
私は本当にリダイレクトが欲しいです。ホームページが欲しい(
http://example.com/
)カテゴリページにリダイレクトする(http://example.com/main/
)
...その後、受け入れられた答えは、ユースケースに正しいです。
他のヒント
カテゴリページはホームページになることはできません(そのように機能しません)。
他に2つのオプションがあります。
- ホームページを特定のカテゴリからの投稿に制限します(閉じるが、同じものではありません)。
- ホームページを実際のカテゴリページにリダイレクトします。
リダイレクトで元気に見えるので、フォローしてみてください。作成 home.php
次のコンテンツを備えたテーマディレクトリのテンプレート:
<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>
おそらくフックでこれを行うためのより整然とした方法がありますが、今は何も考えることはできません。
リダイレクト(追加の接続時間)を使用する代わりにこれを行う最も意味のある方法は、カスタムページテンプレートを作成することです。
新しいページ:
/* Template Name: New Homepage by Cat */
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
テンプレートのindex.phpクエリにカテゴリフィルターを追加するだけです。シンプル
特定のカテゴリIEカテゴリID 3にリダイレクトする場合は、category.phpからコンテンツをコピーして、その後カテゴリ-3.phpのような別のテンプレートを作成します。
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
WordPressの読み取りでは、投稿ページとしてホームを設定し、ホームページの場合はCAT 3の新しいホームページをテンプレートとして選択する必要があります。