web-dev-qa-db-ja.com

Wordpressでサブページシステムを作成する方法

私は現在Wordpressの開発に慣れていないと私はいくつかのカスタム投稿の種類とカスタム機能を持つカスタムテーマを開発しています。ほとんどの場合、インターネットとコーデックスで必要な情報を見つけるのはとても簡単でした。私は古い古いシステム(プロプライエタリ)をWordpressにインポートしています、そしてこの古いシステムのすべてのサブページをWordpressに保存していくつかの強力な機能とプラグインを利用できるようにしたいです。私はほとんどすべてを完成させました、しかし私はカスタム投稿タイプのための階層的な順序を作り出す方法に少し混乱しています。

Wordpressをドメインルートからサブフォルダ(wordpress)にインストールしました。私は他のシステムからのデータを集約するテーマのフロントページを表示するためのフロントページ設定を持っています。私はいくつかのページをきれいなURIで適切に動作させるためにadd_rewrite_ruleを使うことができました。

私の問題は、私は別のデータベースから自動生成されるシステムをいくつか持っているということです。簡単にするために、これらのシステムをservicesと呼びます。

私は現在2つのservicesを持っています、そして最終的にはもっと多くなるでしょう。私が抱えている問題は、各サービスがそれ自身のサブページを持つそれ自身のページを持つ必要があるということです。

例:(メインページ):domain.com/services/aims domain.com/services/rcm

(サブページ):domain.com/services/aims/list domain.com/services/aims/profile

domain.com/services/rcm/list domain.com/services/rcm/profile

各システムは同じ機能を使用して構築されます。リストページには各サービスのベンダーが一覧表示され、プロファイルページには各ベンダーの詳細情報が表示されます。

各システムにも記事を投稿できるようにしたいです。

例:domain.com/services/aims/articles/?(.+)? domain.com/services/rcm/articles/?(.+)?

私の質問はこれです:この機能はWordpressで可能ですか? URIを機能させるためにカスタム投稿タイプを使用しようとしましたが、どのように記事を実装するのかわかりませんでした。私はquery_varsを使って異なるページコンテンツを表示できることを知っています、そしてこれは私がリストとプロフィールでやろうとしていることをエミュレートするでしょうが、私は記事を各サービスに掲示する方法を考え出すことができません。サービスが追加されるたびに新しいファイルを作成するのではなく、サービスに同じファイルを使用したいと思います。

私が期待している効果は、各サービスがコンテンツを整理してリストページにベンダーを一覧表示し、ベンダーの詳細を表示するためにコンテンツを自分自身に投稿する機能を持つことです。カスタムナビゲーションをページに追加する必要があることはわかっていますし、これが簡単な部分であると確信しています。

これが可能かどうか誰かが知っていますか?もしそうなら、どのアプローチが最も効率的でしょうか?

あなたがこの問題を解くことができるどんな助けでもありがとう。また、タイトルが十分ではない場合はごめんなさい...私はそれを簡単に説明する方法を見つけることができませんでした。

1
Jeremy

カスタム投稿タイプを使用することでこれを解決できました。私はServices custom_post_typeを作成し、私はページに特別なテンプレートを割り当てることを可能にするために テンプレートメタボックス を作成しました。

これが実装されている方法は次のとおりです。

Servicesの親ページは私たちが提供するサービスです。親ページの下には、このcustom_post_type用のリストページテンプレートを使用するリストページがあります(投稿のすべての子のリストが表示されるだけです)。それから私はデータベースに投稿を追加するスクリプトを書きました(データは別のデータベースにあり、私はサイトマップを利用したいので)。リストのサブページ(プロファイル)には、ページのスラッグとページのタイトルが少し抜粋されて格納されています。それから私は、投稿が含まれる必要があるコンテンツ(記事)を親のServicesに投稿するだけです。

これにより、各サービステンプレート(メインページ、リスト、プロファイル)をカスタマイズしながら複数のサービスを利用できるようになり、各サービスに記事を投稿できるようになります。ブレッドクラムをServicesページに含めるには、Breadcrumb NavXTを使用しました(Homeの代わりにServicesページを表示するため)。

これを実装する方法はたくさんあることを私は知っていますが、私はServicesのコンテンツをメインサイトのコンテンツから遠ざけたいと思いました。それが私がcustom_post_typeを使いたかった理由です。私ががっかりした唯一のことは、WordPressが通常あなたがページ用に持っているデフォルトのカスタムテンプレートオプションを使わせてくれないことです(page-attributes supportタグを使う。はい、私は'hierarchical' => true'supports' => 'page-attributes'を持っていました)。私は、この同じ問題を抱えている他の人を助けるために、この応答の始めに私のカスタム投稿タイプのカスタムテンプレートコードを提供しました。

0
Jeremy

これは絶対に可能だと思います。私はあなたに完全な実用的な例をあげることはできませんが、ここでいくつか考えがあります -

  • おそらくサービスを分類法にすることができます、そしてサービスを追加することは税に新しい用語を追加することの問題でしょう。
  • 記事をカスタム投稿タイプにして、各投稿をサービス用語に関連付けてそれをそのサービスに添付することができます。
  • post_type_linkフィルタを使用して、関連するサービスの下にある各記事投稿のURLを生成します。例として この答え を参照してください。
  • サービスサブページをカスタム投稿タイプにすることもできます。書き換え規則を正しい優先順位で取得するには、登録した順序で再生しなければならない場合や、規則を手動で記述する必要がある場合があります。
0
Milo