サポート » 使い方全般 » カスタム投稿タイプのカテゴリー別に呼び出せない

  • 解決済 sskdesi

    (@sskdesi)


    カスタム投稿「abcd」内に、
    親カテゴリー「abcd」の子カテゴリー「e」「f」「g」「h」を作成したのち、
    「外観→メニュー」を利用し、
    「abcdのカテゴリー」から「e」「f」「g」「h」を選択しメニューを作成したものの、
    思いつく限りの方法を試しても表示されない状態です。

    functions.phpに以下でカスタム投稿タイプ作成

    //abcd
    register_post_type(
    	'abcd',
    	array(
    		'label' => 'abcd',
    		'hierarchical' => false,
    		'public' => true,
    		'query_var' => false,
    		'menu_icon' => get_bloginfo('template_url').
    		'/images/abcd_s.gif',
    		'supports' => array(
    			'title',
    			'editor',
    			'thumbnail',
    			'custom-fields'
    		)
    	)
    );
    
    //カスタムタクソノミー定義
    register_taxonomy(
    	'abcd_cat',
    	'abcd',
    	array(
    		'label' => 'abcdのカテゴリー',
    		'hierarchical' => true,
    		'rewrite' => array('slug' => 'abcd','a','b','c','d',)
    	)
    );

    以下で、カスタム投稿「abcd」の表示は可能

    <?php query_posts('post_type=abcd&posts_per_page=5&paged='.$paged); ?>
    <?php if(have_posts()): while(have_posts()): the_post(); ?><?php $count++; ?>

    パーマリンク設定は、

    /archives/%post_name%

    メニューを利用した際に生成されるURLは、

    http://◯◯◯.com/archives/abcd/a

    上記のリンクでは、index.phpで分岐されないらしくarchibes.phpを設置しても以下のindex.phpを利用して表示されてしまいます。

    <?php get_header('2'); ?>
    
    	<div id="content">
    		<div id="main">
    			<?php if (is_home()) : ?>
    			<?php elseif (is_archive()) : ?>
    			<?php endif; ?>
    		<!-- /main --></div>
    		<?php get_sidebar(); ?>
    	<!-- /content--></div>
    <!-- /wrapper--></div>
    
    <?php get_footer(); ?>

    カテゴリー別に呼び出す方法として試してみたのは以下などです。

    <?php query_posts($query_string. '&category_name=a-name&showposts=5'); ?>
    <?php
    					$args = array(
    						'tax_query' => array(
    							array(
    								'taxonomy' => 'abcd',
    								'field' => 'slug',
    								'terms' => array( 'sporting_goods' )
    							)
    						),
    						'post_type' => 'abcd',
    						'posts_per_page' => -1
    					);
    					$loop = new WP_Query( $args );
    					while ( $loop->have_posts() ) : $loop->the_post();
    				?>

    宜しくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • とりあえずタクソノミーのスラッグをカスタム投稿タイプとは異なるものに変更して確認してください。
    ‘abcd_cat’のまま使用するなら、スラッグを指定する必要はありません。
     
    フォーラム » 使い方全般 » カスタム投稿タイプでnothing found(404)になってしまいます
     
    スラッグの指定方法も間違っているようです。
    関数リファレンス/register_taxonomy – Codex 日本語版

    トピック投稿者 sskdesi

    (@sskdesi)

    popupさん、ありがとうございます。

    教えていただいたフォーラムを見ながら、
    あれこれと試してみたのですが、

    add_action('init', 'my_custom_init');
    function my_custom_init()
    {}

    上記で括ると、何度試してもwordpressのpost.phpでエラーが出てしまうため、
    スラッグを指定しない方法で進めてみました。

    //ABCD
    register_post_type(
    	'abcd',
    	array(
    		'label' => 'ABCD',
    		'hierarchical' => false,
    		'public' => true,
    		'query_var' => false,
    		'menu_icon' => get_bloginfo('template_url').
    		'/images/abcd_s.gif',
    		'supports' => array(
    			'title',
    			'editor',
    			'thumbnail',
    			'custom-fields'
    		)
    	)
    );
    
    //カスタムタクソノミー定義
    register_taxonomy(
    	'abcd_cat',
    	'abcd',
    	array(
    		'label' => '導入事例のカテゴリー',
    		'hierarchical' => true,
    ));

    この状態でカテゴリ「e」「f」「g」「h」を作成、
    外観→メニューからabcdのカテゴリーとして、「e」「f」「g」「h」を選択し、
    メニューを作成したところ、前回のようにindex.phpではなく、
    専用のcostom-abcd.phpを読み込んでくれたものの、
    カテゴリーごとの呼び出しは表示してくれません。
    というのも、costom-abcd.phpで、
    <?php query_posts('post_type=abcd&posts_per_page=5&paged='.$paged); ?><?php if(have_posts()): while(have_posts()): the_post(); ?><?php $count++; ?>
    としており、カスタム投稿全体の「abcd」、カテゴリーである「e」「f」「g」「h」、
    どちらも共通で呼び出し・分岐出来るような指定方法が分からない状態なのです。

    ご教授いただければ有り難く存じます。
    宜しくお願い致します。

    トピック投稿者 sskdesi

    (@sskdesi)

    popupさん、ありがとうございました。

    無事、自己解決いたしました。
    私の単純なミスで、taxonomy.phpを修正してやるだけで表示がされました。

    訳の分からない溝に入り込んでしまっていたので、
    popupさんのヒントがなければ数日悩み続けていたと思います。
    本当に感謝しております!

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