• 【実現したいこと】

    カスタム投稿タイプのスラッグを投稿IDにする

    【問題点】

    最後に添付するコードで、スラッグを投稿IDにできたのですが、言語スイッチャーのリンクが狂います。例えば、en→ja(現在のローケルはen)の場合にjaのリンクには/ja/がついていません。逆に、ja→en(現在のローケルはja)の場合enのリンクに/ja/がついてしまいます。

    言語スイッチャーのリンクを正しくしつつ、スラッグを投稿IDにしたいです。何か改善できそうな点があればご教授願いたいです。

    【functions.phpへ記載のコード】

    function blog_post_type_link( $link, $post ) {
        if ( $post->post_type === 'blog' ) {
            // 投稿のメタデータから言語を取得
            $post_lang = get_post_meta( $post->ID, '_locale', true );
    
            // 投稿が日本語の場合にのみ '/ja/' を追加
            if ( 'ja' === $post_lang ) {
                return home_url( '/ja/blog/' . $post->ID );
            } else {
                return home_url( '/blog/' . $post->ID );
            }
        }
        return $link;
    }
    add_filter( 'post_type_link', 'blog_post_type_link', 10, 2 );
    
    function blog_rewrite_rules_array( $rules ) {
        $new_rewrite_rules = array();
    
        // 'ja' 言語のためのカスタムルールを追加
        $new_rewrite_rules['ja/blog/([0-9]+)/?$'] = 'index.php?post_type=blog&p=$matches[1]&lang=ja';
    
        // デフォルト言語のためのルールも追加
        $new_rewrite_rules['blog/([0-9]+)/?$'] = 'index.php?post_type=blog&p=$matches[1]';
    
        return $new_rewrite_rules + $rules;
    }
    add_filter( 'rewrite_rules_array', 'blog_rewrite_rules_array' );
Viewing 1 replies (of 1 total)
  • Thread Starter aawiodbaf

    (@aawiodbaf)

    色々やってみたのですが、無理だったので、JSで現在のローケルに合わせて言語スイッチャーのURLから/ja/を抜いたりつけたりすることにしました。ひとまずは問題なさそうです。

    正攻法ができれば知りたいので、解決済みにはしないでおきます。なにか方法をご存じの方はご教授いただけますと幸いです。

Viewing 1 replies (of 1 total)
  • The topic ‘カスタム投稿のパーマリンク’ is closed to new replies.