0

我在我的functions.php文件中使用以下代码向我的 Wordpress 安装添加了一个查询字符串:

function add_query_vars($aVars) {
    $aVars[] = "username";
    return $aVars;
}

add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($aRules) {
    $aNewRules = array(
        '([^/]+)/manage' => 'index.php?pagename=manage&username=$matches[1]',
        '([^/]+)/settings' => 'index.php?pagename=settings&username=$matches[1]',
    );
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

add_filter('rewrite_rules_array', 'add_rewrite_rules');

但是,如果查询字符串为空,我不想加载页面模板username,而是想重定向到主页。例如:

website.com/myusername/manage

...将加载页面模板

website.com/manage

...将重定向回家。

我可以使用 Wordpress 的重写引擎来做到这一点,还是应该采取另一种方法?

4

1 回答 1

2

好吧,我会使用这段代码:

function redirect_to_homepage( $query ) {   
    //page manage and settings does NOT exits
    if ( $query->is_main_query() && ( $query->query_vars['name'] == 'manage' || $query->query_vars['name'] == 'settings' ) ){       
        if( ( !array_key_exists( 'username', $query->query_vars ) || ( array_key_exists( 'username', $query->query_vars ) && trim($query->query_vars['username']) == '' ) ) ) {
            wp_redirect( get_bloginfo('url') );
            exit;
        }   
    }
    //page manage and settings does exits
    if ( $query->is_main_query() && ( $query->is_page('manage') || $query->is_page('settings') ) ){
        if( ( !array_key_exists( 'username', $query->query_vars ) || ( array_key_exists( 'username', $query->query_vars ) && trim($query->query_vars['username']) == '' ) ) ) {
            wp_redirect( get_bloginfo('url') );
            exit;
        }   
    }
}
add_action( 'parse_query', 'redirect_to_homepage' );
于 2013-02-03T11:41:11.850 回答