• 解決済 meijix

    (@meijix)


    カスタム投稿とカテゴリ設定をfunctions.phpで下記のように設定しました。

    register_post_type(‘exgoods’, array( ‘label’ => ‘商品詳細’,’description’ => ”,’public’ => true,’show_ui’ => true,’show_in_menu’ => true,’capability_type’ => ‘post’,’hierarchical’ => true,’rewrite’ => array(‘slug’ => ”),’query_var’ => true,’has_archive’ => true,’exclude_from_search’ => true,’supports’ => array(‘title’,’editor’,’excerpt’,’trackbacks’,’custom-fields’,’comments’,’revisions’,’thumbnail’,’author’,’page-attributes’,),’taxonomies’ => array(‘ctgoods’,),’labels’ => array (
    ‘name’ => ‘商品詳細’,
    ‘singular_name’ => ‘exgood’,
    ‘menu_name’ => ‘商品詳細’,
    ‘add_new’ => ‘Add exgood’,
    ‘add_new_item’ => ‘Add New exgood’,
    ‘edit’ => ‘Edit’,
    ‘edit_item’ => ‘Edit exgood’,
    ‘new_item’ => ‘New exgood’,
    ‘view’ => ‘View exgood’,
    ‘view_item’ => ‘View exgood’,
    ‘search_items’ => ‘Search 商品詳細’,
    ‘not_found’ => ‘No 商品詳細 Found’,
    ‘not_found_in_trash’ => ‘No 商品詳細 Found in Trash’,
    ‘parent’ => ‘Parent exgood’,
    ),) );

    register_taxonomy(‘ctgoods’,array (
    0 => ‘exgoods’,
    ),array( ‘hierarchical’ => true, ‘label’ => ‘商品カテゴリー’,’show_ui’ => true,’query_var’ => true,’rewrite’ => array(‘slug’ => ”),’singular_label’ => ‘ctgood’) );

    これで、メニューにはカスタム投稿とそのカテゴリ設定画面が表示されて、商品データの登録もできます。

    また、single-exgoods.phpは問題なく表示できます。

    しかし、カスタムメニューで作成した、カテゴリを表示するときに、
    archive.phpでしか表示できず、archive-投稿タイプ名.phpでは表示できません。
    archive-exgoods.phpとarchive-ctgoods.phpの両方を試しましたが、表示が空白になってしまいます。archive.phpであれば、問題なく表示されます。

    誠に恐れ入りますが、サポート頂ければ助かります。よろしくお願い致します。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • カスタムメニューで作成した、カテゴリを表示するときに、

    カスタム投稿タイプ「商品詳細」のアーカイブではなく、カスタム分類「商品カテゴリ(ctgoods)」の各タームのアーカイブが表示されないという意味ですか?

    Codex「テンプレート階層」にあるとおり、
    カスタム分類「商品カテゴリ(ctgoods)」の各タームのアーカイブに使われるテンプレートファイルは

    1. taxonomy-ctgoods-{term}.php – スラッグが “hoge” の場合は taxonomy-ctgoods-hoge.php
    2. taxonomy-ctgoods.php
    3. taxonomy.php
    4. archive.php
    5. index.php

    が優先順位となります。

    カスタム分類のアーカイブ => taxonomy-{taxonomy}-{term}.php

    トピック投稿者 meijix

    (@meijix)

    おっしゃる通りに

    taxonomy-ctgoods.phpとしたら、あっさりと表示されました。ありがとうございました。

    実は、

    1.カスタム投稿タイプ「商品詳細」のアーカイブと

    2.カスタム分類「商品カテゴリ(ctgoods)」の各タームのアーカイブ

    の違いが理解できないのですが、一般に、カテゴリ等を表示するのは、2のほうでよいのでしょうか?また、1はどのようなときに使うものなのでしょうか

    誠に恐れ入りますが、よろしくお願い致します。

    1.カスタム投稿タイプ「商品詳細」のアーカイブと

    デフォルトでは紐付けられたカスタム分類に関係なく、カスタム投稿タイプの投稿が時系列順で表示されます。
    デフォルトパーマリンクの場合 http://example.com/?post_type=カスタム投稿タイプ名 になります。
    ※通常の「投稿(post_type=”post”)」のアーカイブと同じです。

    2.カスタム分類「商品カテゴリ(ctgoods)」の各タームのアーカイブ

    デフォルトでは投稿タイプ関係なしに、各タームに紐付けられた投稿が時系列順で表示されます。(カスタム分類は複数のカスタム投稿タイプに紐付けできます)
    デフォルトパーマリンクの場合 http://example.com/?カスタム分類名=各ターム名 になります。
    ※通常の「カテゴリー」別のアーカイブと同じです。

    どちらも性質が異なる物ですので、一概にこれを使うべき、という回答はできませんが、
    通常の投稿一覧と別に「商品情報」の一覧が必要であれば1を
    そこからカテゴリー毎に絞り込んだアーカイブが必要であれば2を使う感じでしょうか?

    トピック投稿者 meijix

    (@meijix)

    ご説明ありがとうございました。

    さっそく、

    taxonomy-ctgoods.php

    にて、カテゴリ内の商品一覧を表示させようと思ったのですが、taxonomy-ctgoods.phpそのものは表示される(テキストを入力して確認しました)のですが、肝心の商品一覧が表示されません。

    まずは、一番単純な形にしてタイトルだけを表示させようとしているのですが、それが表示できず、カスタム投稿ではない、通常投稿のデータが表示されてしまいす。

    <?php if(have_posts()): while(have_posts()):
    the_post(); ?>
    <?php the_title(); ?>
    <?php endwhile; endif; ?>

    という形にしているのですが、これだけではカスタム投稿したデータを表示するには不足なのでしょうか?

    試しに、single-exgoods.phpに設定したような、
    <?php query_posts(‘exgoods’); ?>
    <?php the_field(‘goods_name’,$post->ID); ?>
    とかを並べてみたりしたのですが、全く表示されません。

    誠に恐れ入りますが、アドバイスを頂ければありがたく存じます。

    元がどんなテーマを使っているのか分かりませんが、archive.phpでは表示できたんですか?

    トピック投稿者 meijix

    (@meijix)

    元のarchieve.phpでも、画面そのものは表示できていましたが、カスタム投稿ではない、通常投稿のデータが表示されています。

    元のテーマは、WordPressデザインブック(エビスコム)というテキストの第1章、第2章の部分にある基本サイトです。ほとんど、そのままです。

    よろしくお願い致します。

    んー。
    「問題解決のためのチェックリスト」にもあるのですが、一度トラブルシューティングもダメしてみてください。

    端的に書きますが、全てのプラグインを停止し、デフォルトテーマに(Twenty Twelveなど)に戻してみてください。

    次に、カスタム投稿タイプの設定ですが、最初の投稿に書いてあったコードはテーマのfunctions.phpに書いていますか?
    プラグインでも同様のことができますので、「Custom Post Type UI」などのプラグインを使って設定し直してみてください。

    この2つをやってみて、デフォルトテーマでカスタム分類のアーカイブが意図した通りに出力できていますか?

    トピック投稿者 meijix

    (@meijix)

    了解しました。TwentyTwelveでやってみます。

    あと、さきほどの内容に誤りがありました。
    ————————————————————-
    元のarchieve.phpでも、画面そのものは表示できていましたが、(カスタム投稿ではない、通常投稿のデータが表示されています)。
    ————————————————————-
    ( )の部分は誤りで、通常データも表示されません。

    トピック投稿者 meijix

    (@meijix)

    1)TwenTwelveに戻したあとも同様の結果となりました。

    ウィジェットが外れていたので、「カテゴリ」、「アーカイブ(月別ページ)」と「カスタムウィジェット」を追加しました。

    「カテゴリ」ウィジェット及び」、「アーカイブ(月別ページ)」では、通常の投稿データが表示されました。

    「カスタムウィジェット(商品カテゴリ)」(カスタムメニューからカスタム分類につなげてあるもの)には、カスタム投稿データも、通常投稿データも表示されません。(カテゴリ名、ヘッダーやサイドバーはきちんと表示されています)。

    再度、自作のテーマに戻してみても同じ結果です。

    2)プラグインは、Advanced Custom FieldsとCustom Post Type UIを使っています。一番、最初に載せたfunctions.phpのコードは、Custom Post Type UIから自動生成されたものです。プラグインを外して、自動生成されたコードをfunctions.phpに入れて動かしても同じ結果だったので、そちらのほうを書かせて頂きました。

    3)achieve.phpやtaxonomy-ctgoods.phpについてですが、正常であれば、

    <?php the_title(); ?>とやっただけで、カスタム投稿データを自動的に表示してくれるものなのでしょうか。何か別に書かなければいけないのでしょうか?

    誠に恐れ入りますが、よろしくお願い致します。

    取り急ぎ気になった点
    カスタム投稿タイプを作る時、
    'hierarchical' => true
    となっていますが、現状のままでここを
    'hierarchical' => false
    にしてみたらどうなります?
    ※こちらで検証できないので推測の回答になってしまいますが。

    3)achieve.phpやtaxonomy-ctgoods.phpについてですが、正常であれば、

    <?php the_title(); ?>とやっただけで、カスタム投稿データを自動的に表示してくれるものなのでしょうか。何か別に書かなければいけないのでしょうか?

    むしろ何もカスタマイズしなくても、カスタム投稿タイプが表示されるはずですが、
    先に書いたとおり、カスタム投稿タイプを「階層あり」(=固定ページと同じ)で作っているのが気になりました。

    トピック投稿者 meijix

    (@meijix)

    ‘hierarchical’ => true と は両方ともやってみたのですが、表示に影響はありませんでした。現在は’hierarchical’ => falseになっています。

    お手数をおかけします。

    以前に練習用で作ったWordPressのサイトとかもあるので、そちらでも同じことをやってみます。何もやらなくて表示されるのが正しいのなら、どこか根本的なところが間違っているのかもしれません。

    トピック投稿者 meijix

    (@meijix)

    以前に練習用で作ったWordPressのサイトでやったところ、archive上で問題なくタイトルが表示されました。

    原因が不明なままなので、ちょっと残念ですが、WordPressを入れなおしてみる等をやってみるつもりです。

    数々のアドバイスを頂きまして誠にありがとうございました。

    問題を切り分けるポイントとして
    「大丈夫なサイト」と「問題のあるサイト」を徹底的に比較してみてくださいね。
    例えば

    • 使っているプラグインの有無
    • 使っているテーマの違い
    • パーマリンクなどの設定の違い
    • WordPress本体のバージョンの違い
    • サーバーの違い

    など。

    トピック投稿者 meijix

    (@meijix)

    了解しました。

    ただ、今のところ、これといった違いが思い当たりません。

    テーマは手作りで、もとは同じです。テキストをそのままといった感じです。

    WordPressも同じです。

    サーバーも、Kagoyaで提供されている共有サーバーの一部をドメインを分けて使っているだけで、データーベースも、提供されているものを分けて使っているだけです。

    プラグインがわずかに違いますが、キャッシュを使ったりというのはありません。

    とりあえずDBリセットのプラグインを入れて、DBのデータをリセットしてみましたが、
    問題が消えないので、次はDBを削除して、再度既存のWordPressと接続しなおしてみるつもりです。

    それでも、変わらなかったら、WordPressを入れなおしてみようと思っています。

    トピック投稿者 meijix

    (@meijix)

    データベースを削除して、作り直し、既存のWordPressと接続直したところ、問題は解消されました。

    アーカイブを読みに行って、カスタム投稿データがちきんと表示されています。

    データベースを削除したために、プラグインが停止状態になり、カテゴリ分類等は作り直しになりました。

    現在のところ、どこが悪かったのかは不明です。

    Custom Post Type UIを入れた当初、使い方がわからず、カテゴリを作ってはデータを入れ、削除して作り直しというようなことをやったのが影響したのかもしれません・・・。なお、今回は、今のところ、ラベル名などに日本語も使っていません。もし、問題が再発したら、ご報告させて頂きます。

    ありがとうございました。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • トピック「カスタム投稿がarchive-投稿タイプ名.phpで表示できない」には新たに返信することはできません。