サポート » プラグイン » Custom Post Type Permalinks を使用して get_permalinkの出力URLがrewriteされない

  • 解決済 Circularring

    (@circularring)


    WordPress: 4.1.1
    Custom Post Type Permalinks: 1.0.3

    ・やりたいこと
    get_permalink (get_the_permalink) の出力URLを以下のようにしたい。

    example.com/ターム名/投稿ID/

    ・taxonomy名: ttt
    ・登録したterm名: bbb
    ・Permalinksの設定: /%ttt%/%post_id%/

    期待するURL: example.com/bbb/7/
    現在の出力されるURL: example.com/%ttt%/7/

    get_permalinkを使わず、自分でURLを組み立てれば、該当の個別記事に飛ぶことは可能です。

    code例:
    home_url(array_shift(get_the_terms(get_the_ID(), 'ttt'))->slug.'/'.get_the_ID())

    正常な結果なのか、bugなのか教えていただけますと幸いです。
    別のブラグイン「Rewrite Rules Inspector」でルールを確認すると、Rulesは作成されているようです。

    よろしくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • gblsm

    (@gblsm)

    Custom Post Type Permalinks はカスタム投稿タイプのパーマリンクを書き換えてくれるものなので、カスタム投稿タイプを含まないパーマリンクの場合は、書き換わらないのが正常だと思います。

    トピック投稿者 Circularring

    (@circularring)

    ありがとうございます。

    Plugin の CPTP_Module_Permalink Class に create_taxonomy_replace_tag というfunctionが存在していて、その中で taxonomy名 とterm名をreplaceしている処理が入っていたので、実際に動くのかと思っていたのですが、post_type_link に add_filter していたので、get_post_permalink でないと呼び出さないようでした。
    ( get_permalink の filter は post_link)

    実際にget_permalinkの代わりにget_post_permalinkに置き換えると、動作するのですが、postタイプ投稿の場合は正常動作しないようです。

    仕様的には example.com/ターム名/投稿ID/ は動作対象になるようなのですが、post投稿の場合は 管理画面で Permalink Structure に設定した値は無視してしまう上に、トップページのurlが生成されてしまうようです。

    ここで書くべきではないのかもしれないのですが、52行目の $permalink = $wp_rewrite->get_extra_permastruct( $post_type ); がnullを返してしまうため、この行以降の処理が無意味になってしまっているようです。
    bugといえばbugなのかもしれません。

    結局、手を抜かず自分でfilterを作ることにしました。
    素晴らしいPluginなので、作者様にいい感じにしていただけることを祈って以上としたいと思います。

    ありがとうございました。

    gblsm

    (@gblsm)

    私はCPTPプラグインの作者ではありませんが、bugではないと思いますよ。
    CPTPはカスタム投稿タイプのスラッグを対象にしているので

    仕様的には example.com/ターム名/投稿ID/ は動作対象になるようなのですが、

    そのようにカスタム投稿タイプのスラッグを含まない形式は対象外だと思います。

    作者です。

    とりあえず、Custom Post Type Permalinksは通常のパーマリンクは対象にしていません。

    名前の通りカスタム投稿タイプのパーマリンクをいじるためのプラグインとして作っておりますので。
    通常の投稿などは特にいじっておりません。

    ただ、URLを直接打てばアクセスできるということなので、

    CPTP_Module_Permalink:: post_type_linkのような関数を作って、post_linkにフィルターフックを書けば、それだけで目的は達成出来るかとは思います。

    トピック投稿者 Circularring

    (@circularring)

    ありがとうございます。

    post投稿のPermalinkに関連するものをいじりましたが、いろいろなところに不具合が生じるのと、納期までの時間が足りないため、仕様と運用そのものを変更することにいたしました。

    お付き合いいただきありがとうございました。
    本件は以上とさせていただければ幸いです。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「Custom Post Type Permalinks を使用して get_permalinkの出力URLがrewriteされない」には新たに返信することはできません。