web-dev-qa-db-ja.com

カテゴリページをブログのホームページにする方法

私は私のブログのホームページとしてカテゴリページを使いたいです。それは可能ですか、そしてどのように私はそれをすることができますか?それは.htacces書き換え規則でそれを試みましたが、それはうまくいきませんでした。

3
2ndkauboy

更新

他のすべての解決策を排除して、少なくとも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_querypre_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' );

template)を修正したい場合は、次の2つのうちの1つを実行できます。

  1. 目的のマークアップを使用してhome.phpを作成します
  2. template_redirectまたはhome_templateを使用して、WordPressにあなたのcategory.phpテンプレートを含めるよう強制します。

編集する

ブログ投稿のインデックスURLを次のようにします。

www.example.com/main

それから Static Front Page を使用して、ブログ投稿インデックスとして "main"という静的ページを割り当てることができます。

そしてこれがあなたの目的であれば:

私は本当にリダイレクトが欲しいです。ホームページ(http://example.com/)をカテゴリページ(http://example.com/main/のように見える)にリダイレクトしたい

...そして、受け入れられた答えはあなたのユースケースにとって正しいです。

10
Chip Bennett

カテゴリページをホームページにすることはできません(そのようには動作しません)。

他に2つの選択肢があります。

  1. ホームページを特定のカテゴリからの投稿に限定します(閉じますが同じではありません)。
  2. ホームページを実際のカテゴリページにリダイレクトします。

あなたはリダイレクトに問題がないように思われるので、以下を試してみてください。次のような内容で、テーマディレクトリにhome.phpテンプレートを作成します。

<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>

フックを使ってもっときちんとしたやり方があるかもしれませんが、今は考えられません。

2
Rarst

リダイレクト(追加の接続時間)を使用する代わりにこれを行うための最も意味的な方法は、カスタムページテンプレートを作成することです。

新しいページ:

/* Template Name: New Homepage by Cat */

<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
2

特定のカテゴリ、つまりカテゴリID 3にリダイレクトしたい場合は、category.phpからコンテンツをコピーして、category-3.phpのような別のテンプレートを作成します。

    * Template Name: New Homepage by Cat 3*/

    <?php query_posts('cat_id'=>'3');?>
    <--insert loop-->

ワードプレスの読書では、投稿ページとしてホームページを設定する必要があり、ホームページではテンプレートとしてCat 3のNew Homepageを選択します。

0
Kishore Sahoo

テンプレートのindex.phpクエリにカテゴリフィルタを追加するだけです。単純な

0
Mild Fuzz