カスタム投稿タイプprojects
を定義し、それらの投稿タイプのパーマリンクを/projects/my-project/
に設定しました。ただし、プロジェクトの1つでは、特別なURLを指定する必要があるため、/projects/special-project/
の代わりに/special-project/
に表示されます。
それは可能ですか?
以下を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');
もちろん、同じ効果を得るためにあなたが使うことができる他の方法/方法論がありますが、上記で十分でしょう。