web-dev-qa-db-ja.com

単一の投稿エントリのパーマリンクを変更する

カスタム投稿タイプprojectsを定義し、それらの投稿タイプのパーマリンクを/projects/my-project/に設定しました。ただし、プロジェクトの1つでは、特別なURLを指定する必要があるため、/projects/special-project/の代わりに/special-project/に表示されます。

それは可能ですか?

2
Xavi Ivars

以下をfunctions.phpに追加してみてください。

function wpse221475_custom_rewrite_rules() {

  add_rewrite_rule(
    '^(special-project)?', 
    'index.php?post_type=projects&name=$matches[1]', 
    'top'
  );

}

add_action('init', 'wpse221475_custom_rewrite_rules');

このルールを追加した後は、必ず書き換えルールをフラッシュしてください。

訪問:

Dashboard -> Settings -> Permalinks

あるいは、望むなら、 flush_rewrite_rules() をプログラム的に使うこともできます。

http://example.com/projects/special-projectへのリクエストをhttp://example.com/special-projectにリダイレクトするには、wpフックでリクエストを解析できます。

function wpse221475_redirect_request($wp) {

    if ( ! empty($wp->request) && $wp->request === 'projects/special-project' ) {

        wp_redirect(home_url('special-project'), 301);
        exit;

    }

}

add_action('wp', 'wpse221475_redirect_request');

もちろん、同じ効果を得るためにあなたが使うことができる他の方法/方法論がありますが、上記で十分でしょう。

3
userabuser