サポート » 使い方全般 » 別々のカスタム投稿タイプに共通のカテゴリを作りたいです。

  • はじめましてkururiと申します。
    当方PHP、ワードプレス共に初心者でございます。

    現在インテリア系ショッピングサイトを作るためにカスタムタクソノミーを使っております。
    カスタムタクソノミーでテーブル投稿タイプ、チェア投稿タイプの作成をし、記事を書けるところまではできたのですが、それぞれの投稿タイプに1000円までの商品、2000円までの商品という共通のカテゴリを作るやり方がわかりません。
    チェア投稿タイプに1000円までの商品というカテゴリを設定するとチェア投稿タイプの商品しか表示されない状態をチェア、テーブル両方の商品を表示させれるようようにしたいと考えております。
    当方の知識不足で大変恐縮なのですが、何卒お力添えを賜りたく存じます。
    尚、「複数のカスタム投稿タイプに共通のカテゴリ」 http://ja.forums.wordpress.org/topic/5747?replies=8というページを拝見させて頂いたのですが、
    当方の知識不足で具体的な表示方法などが理解できませんでした。
    おそらくfunction.phpの書き方が記載してあったのだと思うのですが、タクソノミphpの書き方等も教えて頂けますと助かります。
    何卒よろしくお願いいたします。

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

    (@jim912)

    kururiさん、こんにちは。

    価格帯のカスタム分類がテーブルとチェアの投稿タイプで利用できるようになっていれば、価格帯の分類表示では両方の投稿タイプが表示されるようになっているはずです。

    今、何がどこまで出来ていて、何が出来ていないのかもう少し詳しく説明いただけますか?

    トピック投稿者 kururi

    (@kururi)

    返信頂きありがとうございます。

    現在テーブルとチェアにそれぞれ価格帯のカテゴリを作って登録している状態です。

    サイドバーに<?php wp_nav_menu(‘menu=chair-type’); ?>と<?php wp_nav_menu(‘menu=table-type’); ?>を設定しており、チェアの「1000円までの商品」カテゴリリンクとテーブルの「1000円までの商品」カテゴリリンクの両方表示されており、それを一つにまとめたいと考えております。

    items.phpには、
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    “>
    <?php the_post_thumbnail(‘thumbnail’); ?>

    <?php endwhile; endif; ?>
    を記載し「1000円までの商品」を表示しております。
    こちらにチェアとテーブル両方の「1000円までの商品」を表示したいと考えております。

    何かfunction.phpにチェアとテーブルをひもづけるコードを書かないといけないのでしょうか。
    言葉足らずの所や説明不足な所があり大変申し訳ございません。
    お時間のあるときでよろしいので何卒ご教授賜りたく存じます。
    よろしくお願いいたします。

    【チェアタイプのコード】※下記は正常通り動いております。
    add_action(‘init’,’create_chair_post_type’,0);
    function create_chair_post_type() {
    register_post_type(
    ‘chair’,
    array(
    ‘label’ => ‘チェア’,
    ‘public’ => true,
    ‘hierarchical’ => false,
    ‘menu_position’ => 5,
    ‘rewrite’ => false,
    ‘query_var’ => false,
    ‘supports’ => array(
    ‘title’,
    ‘editor’
    ),
    ‘register_meta_box_cb’ => ‘chair_meta_box’
    )
    );
    }
    add_action(‘init’,’create_chair_ct’,0);
    function create_chair_ct() {
    register_taxonomy(
    ‘chairtype’,
    ‘chair’,
    array(
    ‘hierarchical’ => true,
    ‘label’ => ‘チェアタイプ’,
    ‘singular_name’ => ‘チェアタイプ’,
    ‘query_var’ => true,
    ‘rewrite’ => true
    )
    );
    }

    モデレーター jim912

    (@jim912)

    kururiさん

    カスタム分類(タクソノミー)を利用するには、その分類を登録する register_taxonomy を実行する必要があります。

    リンクを貼ったCODEXにも記述されていますが、 register_taxonomy は大別すると

    <?php register_taxonomy($taxonomy, $object_type, $args); ?>

    $taxonomy:(文字列)(必須)分類の名称。
    $object_type:(配列/文字列)(必須)分類オブジェクトのオブジェクトタイプ。
    $args:(配列/文字列)(オプション)引数の配列。

    の3つで構成されています。ご呈示いただいたコードの register_taxonomy では沢山のパラメータが指定されているように見えますが、$args が配列で指定されているため多く見えているだけです。

    ここで、カスタム分類がどの投稿タイプで使えるか指定しているのは、2番目のパラメータ $object_type になります。呈示頂いたコードでは、'chair'となっていますので、chairという投稿タイプで利用するという指定になっています。

    これを複数の投稿タイプで利用できるようにするには、最初に挙げていただいたフォーラムの回答にもあるように配列で記述する必要がなります。配列が何かを説明するのは長くなりますので避けますが、カスタマイズなど行う場合は必要な知識となりますので、憶えておくと良いです。

    具体的な記述方法ですが、register_taxonomyの

    'chair',

    の部分を

    array( 'chair', 'table' ),

    とすれば、チェアだけでなくテーブルでもチェアタイプの分類を登録できるようになります。

    トピック投稿者 kururi

    (@kururi)

    jim912さん

    お早い返信本当にありがとうございます。

    register_taxonomyに配列で登録した所、希望する動作を行う事ができました。
    わかりやすい説明をして頂き、本当に感謝しております。

    ワードプレスを始めてまだ1ヶ月程度ですが、
    jim912さんのおかげで少しずつ前進していけそうな気がします。
    本当にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「別々のカスタム投稿タイプに共通のカテゴリを作りたいです。」には新たに返信することはできません。