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 に答える