それだと、post_id のみの条件で検索できてしまうので、 meta_value はなんでもいけてしまいます。
そのあたりの制御はたぶん、他にいろいろコーディングしないといけなさそうですが、とりあえず割愛。
テーマの functions.php に以下のコードをかけば、動くかなと思います。
※カスタムタイプ名 = custom_type
※カスタムフィールド名 = date
と仮定すると下記のようになるかなーと思います。
function myRewriteRule(){
add_rewrite_rule('custom_type/([0-9]{4}-[0-9]{2}-[0-9]{2})/([0-9]{1,})/?$' ,'index.php?post_type=custom_type&meta_key=date&meta_value=$matches[1]&p=$matches[2]', '');
}
add_action( 'init', 'myRewriteRule', 10, 0 );
function add_query_vars_filter( $vars ){
$vars[] = "meta_key";
$vars[] = "meta_value";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
他には、registered_post_type
アクションにフックして、カスタム投稿タイプの登録後に、add_permastruct を使ってパーマリンクを登録するという方法があります。
参考: https://github.com/torounit/simple-post-type-permalinks/blob/master/includes/Module/Rewrite.php
また、 @kimipooh さんの解答でもそうですが、あくまでもこれらは、WordPress がこれらのURLを解釈出来るようにするだけですので、get_permalink()
等は、また別途 term_link
フィルターで変更する必要があります。
参考: https://github.com/torounit/simple-post-type-permalinks/blob/master/includes/Module/Permalink.php
お返事頂きましてありがとうございます。
一部説明が足りませんでした。
お二方にご回答頂いたような、WordPressが独自のパーマリンクを解釈できるようにする点については、独力で調べた時点である程度理解できたのですが、その独自パーマリンクをWordPressが自動で生成するようにしたいのです。
具体的には、カスタム投稿タイプへの投稿時に自動でmeta_valueを含んだパーマリンクを自動生成して出力させたいと思っております。
私なりに調べたところ、お二方ご指摘頂いたような方法でパーマリンクを解釈できるようにした上で、the_permalinkフィルターを使用すればいけるのかな?と思ったりしました。