web-dev-qa-db-ja.com

WordpressのURLリダイレクト

私はhttp://www.mysiteurl.com/pagename/にワードプレスのページを持っています、そして私は私のオリジナルのページをリダイレクトするか表示するためにhttp://www.mysiteurl.com/pagename/{any string here}の形式のURLが欲しいです。どうやってこれをやるの?私にとってこれを簡単にするワードプレスプラグインはありますか?

1
Cameron

これはかなり可能です。まず、pagename/{customString}を404ではなくページ自体として解決するようにした後は、URIをそのままにしてページのコンテンツを提供するか、ページのパーマリンク(get_the_permalink())などにリダイレクトするかを自由に選択できます。

add_action( "init", function(){
    $pagename = "pagename"; // page slug
    add_rewrite_rule(
        sprintf('^%s/([^/]*)/?', $pagename),
        sprintf('index.php?pagename=%s&pageParam=$matches[1]', $pagename),
        'top'
    );
});

add_filter( "query_vars", function( $vars ){
    $vars[] = "pageParam";
    return $vars;
});

add_action( "template_redirect", function(){
    if ( $param = get_query_var( "pageParam" ) ) {
        /* make sure param is not for comments pagination or smth similar */ 
        wp_redirect( get_the_permalink(), 301 );
        exit;
    }
});

リダイレクトしたくない場合はtemplate_redirectにフックされているコードを削除してください(15行目以降)。そのカスタム文字列({any string here})を取得するには、単にget_query_var( "pageParam" )を呼び出します。

それが役立つことを願っています。

2
Samuel Elh