質問: サイドバーウィジェットのカスタム投稿タイプデータ (注:この質問はもともとカスタムフィールドに関するものでしたが、@ mikeschinkelにはカスタム投稿タイプに関するより良い解決策がありました)私のサイトには、サイドバーに同じデータを表示したいページがいくつかあります。たとえば、次のような構造では、-home -cars -volvo 850 overview -volvo 850 tech spec -volvo 850 pictures -porsche 911 overview -porsche 911 tech spec -porsche 911 pictures -roads -route 66 overview -route 66 history -route 66 pictures -pan-american highway overview -pan-american highway history -pan-american highway pictures すべてのvolvo 850ページに同じデータをサイドバーに表示させ、すべてのporscheページに異なるデータセットを表示させたい(たとえばspeed、makerなど)。道路ページには、道路ごとに独自のデータセットがあります。 cars and roadsにも独自のページテンプレートがあり、正しいサイドバーを取得する方法はsidebar.php内で次のようになっています。if ( is_page_template('car-profile-template.php') ) : // show car widgets これがサンプルのページ、volvo 850 picturesページです。同じ(左側の)サイドバーは他のvolvo 850ページにも現れるはずですが、右側のものは単なるページコンテンツです。| home •cars roads | -------------------------------------------------------- | overview | volvo 840 pictures | | tech spec | (some pics) | | •pictures | | ------------------ | | -specs- | | | volvo 850 | | | speed:150mph | | | maker:volvo | | | download pdf | | ------------------ | | -rating- | | | style:3 | | | safety:5 | | | reliablity:4 | | ------------------ | この例では、2つのサイドバーウィジェット、specsとratingがカスタム投稿タイプから情報を取得しているはずです。エンドユーザーが簡単に編集できる方法はありますか。つまり、このカスタムデータを一度だけ入力すればよいということです。各フィールドを別々にする必要はないかもしれません(つまり、specのすべてをeditorフィールド内に入力し、ratingのすべてを抜粋フィールドに入れることができます。多分)
回答: 更新:質問の更新に基づいて、 "car" customのカスタムフィールドを使用して、質問で求められていることが以下の回答で実行できることを明示的に述べる必要があると思います特定の車のすべてのページに表示する各アイテムの投稿タイプ。それを行う場合は、以下に含まれるsingle-car.phpテンプレートファイルにサイドバーをハードコーディングし、ifステートメントを使用して、異なるurlに対して表示するコンテンツを決定します。サイドバーをウィジェット化して、ウィジェットが現在の投稿idの情報を取得するカスタムウィジェットを開発する努力に行くことができますが、他の人が使用するテーマとしてこれを構築しない限り、両方がなぜですか?実際には、これを達成するための微妙に異なる方法がたくさんありますが、私が提案している方法は、あなたのニーズに対して素晴らしく不思議に思うべきです。こんにちは@cannyboy:実際、投稿間でカスタムフィールドを共有する最善の方法はわかりません。しかし、それは単にあなたが必要とする赤い旗かもしれません。多分何かが難しいように思えたら...別のアプローチ?...あなたは異なる方法で建築することができます? "car" のカスタム投稿タイプを作成すると、各のすべてを保存できるようになると思います」ページ」を1つの車の投稿タイプに追加します。サンプルurlを次に示します。http://example.com/cars/volvo850/ <-- overview http://example.com/cars/volvo850/tech-specs/ http://example.com/cars/volvo850/pictures/ カスタム投稿タイプについて学ぶ次の質問に対する回答で、カスタム投稿タイプの詳細をご覧いただけます。 cmsとしてwordpressを使用するためのヒント? crunchbase.comクローンをwordpressを使用して実装できますか? カスタム投稿タイプと書き換えルールカスタム投稿タイプと複数のページを実装するには、次のようなコードを使用します。は "car" カスタム投稿タイプを登録し、を設定します車のページのルールを書き換えます。このコードをテーマのfunctions.phpファイルまたはプラグインのいずれか好きな方に配置します。<?php add_action('init','car_init'); function car_init() { register_post_type('car', array( 'label' => 'cars', 'public' => true, 'show_ui' => true, 'query_var' => 'car', 'rewrite' => array('slug' => 'cars'), 'hierarchical' => true, //'supports' => array('title','editor','custom-fields'), ) ); global $wp,$wp_rewrite; $wp->add_query_var('car-page'); $wp_rewrite->add_rule('cars/([^/]+)/(tech-specs|pictures)','index.php?car=$matches[1]&car-page=$matches[2]', 'top'); $wp_rewrite->flush_rules(false); // this should really be done in a plugin activation } 車固有のテーマテンプレートファイル次に、テーマに car -specificテンプレートファイルが必要です;これのデフォルト名はsingle-car.phpです。 3つのurlすべてをレンダリングするスターターテンプレートをコーディングしました((overview)、 'tech-specs' if ステートメントを使用してレンダリングするコンテンツを決定することにより、1つのテンプレートで 'pictures' ):<?php get_header(); ?> <div id="container"> <div id="content"> <?php if ( have_posts() ): the_post(); ?> <div id="post-<?php the_id(); ?>" <?php post_class(); ?>> <h1 class="entry-title"><?php the_title(); ?></h1> <div class="entry-content"> <?php if(is_car_techspecs()): ?> <a href="..">back</a> <h1>tech specs</h1> the tech specs go here! <?php get_post_meta($post->id,'_car_tech_specs'); ?> <?php elseif (is_car_pictures()): ?> <a href="..">back</a> <h1>pictures</h1> car pictures go here! <?php get_post_meta($post->id,'_car_pictures'); ?> <?php else: ?> <ul> <h1>overview</h1> <li><a href="tech-specs/">tech specs</a></li> <li><a href="pictures/">pictures</a></li> </ul> <?php the_content(); ?> <?php endif; ?> <?php the_content(); ?> </div> <?php endif; ?> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?> 上記の例では、get_post_meta()を使用して非常に単純化していることに注意してください。実際のサイトでは、もっと複雑にする必要があります。テンプレートタグa.k.a.ヘルパー関数もちろん、 if ステートメント条件のテンプレートファイルの複雑さを最小限に抑えるために、いくつかのテンプレートタグa.k.a.ヘルパー関数を使用しました。ここにあり、テーマのfunctions.phpファイルにもこれらを配置できます。function is_car_techspecs() { global $wp_query; return is_car_page('tech-specs'); } function is_car_pictures() { global $wp_query; return is_car_page('pictures'); } function is_car_page($page) { global $wp_query; return (isset($wp_query->query['car-page']) && $wp_query->query['car-page']==$page); } カスタム投稿タイプの愛で満たされたスクリーンショットすべてのコードを配置し、 car のような volvo 850 の投稿を追加したら、次のように動作させることができます。スクリーンショット:概要ページ (ソース: mikeschinkel.com )技術仕様ページ写真ページ