サポート » 使い方全般 » パーマリンクにカスタムフィールドの値を使用する

  • パーマリンクにカスタムフィールドの値を使用し、
    下記のようなURLを構成したいと考えています。

    http://www.example.com/custom_type/meta_value/post_id/

    meta_valueは日付をハイフンで繋いだものとなっています。(YYYY-MM-DD)

    上記を実現する場合、どのようにすればいいでしょうか?
    add_rewrite_rule()などを使用するのだと思いますが、具体的な実現方法がわかりませんでした。

    ご教示頂けましたら幸いです。
    よろしくお願いしたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • それだと、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

    トピック投稿者 lynette88

    (@lynette88)

    お返事頂きましてありがとうございます。

    一部説明が足りませんでした。
    お二方にご回答頂いたような、WordPressが独自のパーマリンクを解釈できるようにする点については、独力で調べた時点である程度理解できたのですが、その独自パーマリンクをWordPressが自動で生成するようにしたいのです。

    具体的には、カスタム投稿タイプへの投稿時に自動でmeta_valueを含んだパーマリンクを自動生成して出力させたいと思っております。
    私なりに調べたところ、お二方ご指摘頂いたような方法でパーマリンクを解釈できるようにした上で、the_permalinkフィルターを使用すればいけるのかな?と思ったりしました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「パーマリンクにカスタムフィールドの値を使用する」には新たに返信することはできません。