那么,如何将类别重定向到同名页面(如果存在)呢?

时间:2018-09-29 作者:Andrew Seabrook

因此,我之前测试了一个特定的重定向,我知道该页面存在。

function nepal_template_redirect() {
    if ( is_category( \'nepal\' ) ) {
        $url = site_url( \'/nepal\' );
        wp_safe_redirect( $url, 301 );
        exit();
    } } add_action( \'template_redirect\', \'nepal_template_redirect\' );
然而,我真正想做的是包含一个通用函数,该函数重定向存在同名页面名称的任何类别。所以我按照这些思路思考。

function pagefromcat_template_redirect()
{
    $category_id = get_cat_ID( \'Category Name\' );
    if (page_exists($category_id))
    {
        $url = site_url( \'/\' . $category_id);
        wp_safe_redirect( $url, 301 );
    }

}

add_action( \'template_redirect\', \'pagefromcat_template_redirect\' );
但是,似乎没有任何类似page\\u exists()的抄本项目

那么我该如何编写函数来实现这一点呢?或者,是否有一个我已经错过的现有的。谢谢

2 个回复
最合适的回答,由SO网友:Andrew Seabrook 整理而成

看来我现在有了。很大程度上是因为@迈克尔-它当然要求类别与页面标题完全相同,但这正是我想要的。

函数pagefromcat\\u template\\u redirect(){如果(!is\\u category()){返回;}

$category = get_queried_object();
// $page = get_page_by_path( $category->slug );  -- doesnt work
// $page = get_page_by_path( \'destinations/\' . $category->slug); works but with deeper nested locations this will cause a problem, and we will have to have multiple prefixed locations
// atcivities immediately for instance.
$page = get_page_by_title($category->name);

if ( $page instanceof WP_Post )
{
    $url = get_permalink( $page );
    wp_safe_redirect( $url, 301 );
}
}

SO网友:Hans

get_page_by_path 做了类似的事情:

function pagefromcat_template_redirect()
{
    if ( ! is_category() ) {
        return;
    }
    $category = get_queried_object();
    $page = get_page_by_path( $category->slug );
    if ( $page instanceof WP_Post )
    {
        $url = get_permalink( $page );
        wp_safe_redirect( $url, 301 );
    }

}

add_action( \'template_redirect\', \'pagefromcat_template_redirect\' );

结束

相关推荐

Media Library Categories

我使用以下内容将类别分配给我的WordPress媒体库(在functions.php):function wptp_add_categories_to_attachments() { register_taxonomy_for_object_type( \'category\', \'attachment\' ); } add_action( \'init\' , \'wptp_add_categories_to_attachments\' ); 每个媒体库项目都