web-dev-qa-db-ja.com

カテゴリをページにリダイレクトし、カテゴリを非表示にする最善の方法

カテゴリアーカイブページがあります。 http://mysite.com/news

カテゴリ 'news-article'からのアイテムのアーカイブを表示します

http://mysite.com/category/news-articlehttp://mysite.com/news のリクエストをリダイレクトしたい(前者が直接アクセスできない)。

ベストプラクティスはありますか?私の.htaccessファイルに301 Redirectを入れるべきですか(または同じようにするためにプラグインを使うべきですか?)。

それともwp_safe_redirectを使うべきですか?もしそうなら、どのアクションフックを使うべきですか?のように:

add_action( 'WHICH_ACTION_HOOK??', 'adam_redirect_news' );
function adam_redirect_news () {
    if ( is_category( 'news-article' ) ) {

        wp_safe_redirect( 'http://mysite.com/news' );
        exit;
    }
}
5
Pat Gilmour

私は何らかの理由でわからない、add_filterはエラーを引き起こしました。私は以下のものを使いました:

function my_page_template_redirect()
{
    if ( is_category( 'news-articles' ) ) {
        $url = site_url( '/news' );
        wp_safe_redirect( $url, 301 );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );
4
Zhang Buzz

上の@Laykaのおかげで、私はコードを少し微調整しました、そして、これは私が必要としたことをします。

それはおそらく同じ時期に呼ばれるどんなフィルタでもありえます - 確かではありません。

/**
 * Redirect 'category/news-articles' category to 'News page' ( at http://www.example.com/news' )
 *
 */
add_filter('template_redirect', 'template_redirect_filter', 10, 3);
function template_redirect_filter( $url, $term, $taxonomy ) {

    if ( is_category( 'news-articles' ) ) {

        $url = site_url( '/news' );

        wp_safe_redirect( $url, 301 );

        exit;

    }

    return $url;

}
3
Pat Gilmour
function template_category_template_redirect()
{
    if( is_category())
    {
        wp_redirect( site_url() );
        die;
    }
}
add_action( 'template_redirect','template_category_template_redirect' );
0