サポート » プラグイン » Bogo:第2言語でカスタム投稿タイプのスラッグ名を固定ページで使う

  • 解決済 fjsk

    (@fjsk)


    お世話になります。
    Bogoを使って、多言語サイトを構築しておりますが、カスタム投稿タイプにて使っているスラッグ名を固定ページのURLとしても使っており
    第1言語では問題無く意図した動作をしますが、第2言語ではトップページにリライトされてしまいます。
    これを多言語全てで動作させるにはどうすれば良いでしょうか?

    ちなみに、2年前のフォーラム https://ja.forums.wordpress.org/topic/24252?replies=16 と近しい内容に感じますが
    WordPress 4.3, Bogo 2.5に https://ja.forums.wordpress.org/topic/152931?replies=22 のToro_Unit さんパッチを追記した環境で意図した動作をしていません。

    ■前提
    ・固定ページ(例としてnewsページ)を作成し、カスタム投稿タイプで制作したページのリンクをまとめたインデックスページとして運用する(アーカイブのように引っ張ってきているわけではなく、単なるURLとその説明を記載しただけの一覧ページ)
    ・日英(今後増える予定)で同じスラッグ(news)を使って多言語化を行う
    ・カスタム投稿タイプはfunctions.phpにて登録、”rewrite” => array( “slug” => “news”, “with_front” => false ),としている
    ・サイト言語は日本語になっている
    ・パーマリンク設定は投稿名になっている(example.com/%postname%/)

    ■構造
    index.php
    |- news(固定ページ:第1言語日本語=example.com/news/, 第2言語英語=example.com/en/news/)
      |- 営業(カスタム投稿タイプ:日本語=example.com/news/sales/, 英語=example.com/en/news/sales/)
      |- 人事(カスタム投稿タイプ:日本語=example.com/news/personnel/, 英語=example.com/en/news/sales/personnel/)
    など、newsという固定ページに、部署毎のカスタム投稿タイプで作成したニュースページへのリンクをまとめる

    ■現状
    第1言語日本語=example.com/news/ は固定ページに記載した通り問題無く表示されているが
    第2言語英語=example.com/en/news/ はトップページにリライトされる
    なお、単純にexample.com/en/news-e/ など、別スラッグにすると問題無く表示される

    ■functions.phpに記載しているカスタム投稿タイプ
    $labels = array(
    “name” => “News”,
    “singular_name” => “news”,
    );
    $args = array(
    “labels” => $labels,
    “description” => “”,
    “public” => true,
    “show_ui” => true,
    “has_archive” => false,
    “show_in_menu” => true,
    “exclude_from_search” => false,
    “capability_type” => “page”,
    “map_meta_cap” => true,
    “hierarchical” => true,
    “rewrite” => array( “slug” => “news”, “with_front” => false ),
    “query_var” => true,
    “menu_position” => 6,
    “supports” => array( “title”, “editor”, “excerpt” )
    );
    register_post_type( “news”, $args );

    何でも良いのでご教示頂けますと幸いです。
    宜しくお願い致します!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター Takayuki Miyoshi

    (@takayukister)

    ありがとうございます。手元で試してみます。

    ただ、ざっと見ての直感ですが、

    • パーマリンク設定は投稿名 (example.com/%postname%/)
    • カスタム投稿タイプのスラッグが news
    • 固定ページのスラッグにも news が使われる

    この条件では example.com/news が、カスタム投稿タイプのアーカイブなのか、固定ページなのか、はたまた普通の投稿なのか、判別不能になるのが避けられないように思えます。

    Bogo の件は Bogo の件として、それとは別にパーマリンク設計の見直しも考えてみてはどうかと思います。

    > Takayuki Miyoshi さま

    いつも有難うございます。

    そうですね、パーマリンクに関しては最後に残されたこの問題だけクリア出来れば
    表記的にはこの形がベストなので、出来ればこのまま行きたいというのがありますが
    仰るとおり問題もはらみますので、今後気をつけたいと思います。

    それから、第1言語は問題無くnewsを使って固定ページをカスタム投稿タイプトップのように利用出来ているので、第2言語でも利用出来るように、何かしら対処法があればとても助かります!

    register_post_typeに渡すときのパラメーターを、

    "rewrite" => array(
      "slug" => "news",
      "with_front" => false,
      "walk_dirs" => false
     ),

    としてみてはいかがでしょうか?
    walk_dirsはパーマリンクの構造をディレクトリを遡って登録する機能です。デフォルトの場合trueです。

    詳細は、英語版Codex Class Reference/WP Rewrite のgenerate_rewrite_rulesの項目を読めば解るかもしれません。

    > Toro_Unit さま

    前回に引き続き、ご回答有難うございます!
    す…素晴らしいです。こちらを追記したところ、第2言語でも意図した動作になりました!!

    generate_rewrite_ruleの項を読みましたが、元がtrueなので、指定スラッグ以下の全てのディレクトリに対するリライトルールが生成され書き換えられるところをfalseにし、新規に生成されないようにするということで認識は合っていますでしょうか?

    ちなみに、今回はnews以下、各部署カスタムポストがあり、それ以下の階層は無いのですが、他の案件でありそうなのが、例えばページネーションなどでパーマリンクが生成された時もこちらで正常に動作するでしょうか?

    それにしても、毎度、的確なアドバイスを頂き、もの凄く助かっているのですが
    初期の時、どのように勉強されて、今のスキルを身につけたのでしょうか?
    もし良ければ勉強方法を教えて頂きたいです。。。

    とにかく、表題の件は解決しまして、改めて本当に有難うございました!!

    generate_rewrite_ruleの項を読みましたが、元がtrueなので、指定スラッグ以下の全てのディレクトリに対するリライトルールが生成され書き換えられるところをfalseにし、新規に生成されないようにするということで認識は合っていますでしょうか?

    その認識で大丈夫です。
    ものすごいおおざっぱに言うと、WP Rewrite::generate_rewrite_rulesがリライトルールを生成する際に、使われるパラメーターが 引数のrewrite になります。
    ページネーションもデフォルトでtrueなので、生成されるはずです。

    勉強方法と言うほどたいしたことはしてませんが、僕の場合はプラグイン作ってみたり、コアやプラグインのコードを追いかけまくったりですね。試しに作っていろいろトライアンドエラーしてたりとかもやってました。

    Rewrite周りは結構情報が少ないので。。。。

    > Toro_Unit さま

    あの後出張になり、ご返信遅くなりまして大変申し訳ありません。

    本当に毎度勉強になります!
    やはりソースコードを追っかけたり、その成果をプラグイン作成したりして
    スキル磨きされているんですね。たしかに動作しているコード追えば
    仕組みが分かりますもんね。私も少しずつ頑張ります!

    非常に助かりました。本当に有難うございました。
    こちらにて解決とさせて頂きます!
    今後とも宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「Bogo:第2言語でカスタム投稿タイプのスラッグ名を固定ページで使う」には新たに返信することはできません。