将类别重定向到页面并隐藏类别的最佳方法

时间:2014-09-09 作者:Pat Gilmour

我在以下位置有一个类别存档页:http://mysite.com/news

它显示“新闻文章”类别中项目的存档

我想重定向任何请求http://mysite.com/category/news-articlehttp://mysite.com/news (因此,前者永远无法直接访问)。

是否有最佳实践?我应该在我的中设置301重定向吗。htaccess文件(或使用插件来执行相同操作)?

或者我应该使用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;
    }
}

3 个回复
SO网友:Zhang Buzz

不知什么原因,add\\u过滤器导致了错误。我使用了以下方法:

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\' );

SO网友:Pat Gilmour

多亏了上面的@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;

}

SO网友:priyank vadhvana
function template_category_template_redirect()
{
    if( is_category())
    {
        wp_redirect( site_url() );
        die;
    }
}
add_action( \'template_redirect\',\'template_category_template_redirect\' );
结束