web-dev-qa-db-ja.com

カスタム投稿タイプタグアーカイブは基本的なループでは動作しませんか?

カスタム投稿タイプを正しいパラメータで登録しました。つまり、'taxonomies' => array('post_tag','category')を追加したということです。

私もregister_taxonomy_for_object_type('post_tag', 'custom-post-type-name');を使ってみました

私はfunctions.phpにカスタム関数を持っていて、に沿って条件付きで基本ループをロードしています。

function child_maybe_do_grid_loop() {    
if( is_tag() || is_category() || is_archive {
require(CHILD_DIR.'/custom-tag.php');
 }
}

Custom-tag.phpの内容は非常に基本的なループです

<?php if (have_posts()) : ?>
 <?php while (have_posts()) : the_post(); ?> 
   <?php the_permalink(); ?>" title="<?php the_title(); ?> 
 <?php endwhile; ?>    
<?php else : ?>
<h2 class="center">Not Found</h2>
<?php endif; ?>

これは通常の投稿/ページタグではうまくいきますが、カスタム投稿タイプのタグでは「見つかりません」と表示されます。

何か案は?通常の単純なループはカスタム投稿タイプのタグアーカイブで動作するはずですか、それとも追加の条件/クエリをそこに入れる必要があるのでしょうか。

** toschoのコメントを更新してデバッグを有効にしました。デフォルト投稿を通して作成された作業タグページと比較すると、カスタム投稿タグのデバッグはまったく同じです。

同じタグにカスタム投稿を追加していくと、count => 2と表示されることさえありますが、それでもページは何も返すことを拒否しています。

1
Wyck

うさぎの穴を下って.....修正を見つけました。

この投稿から 日付と分類法によるカスタム投稿タイプアーカイブ

これは私にこのtracチケットをさせてくれます http://core.trac.wordpress.org/ticket/14589

そして以下

function post_type_tags_fix($request) {
    if ( isset($request['tag']) && !isset($request['post_type']) )
    $request['post_type'] = 'any';
    return $request;
} 
add_filter('request', 'post_type_tags_fix');

多分これは3.1にそれをしなかったか。

8
Wyck

あなたは条件文の前にループを実行する必要があります。

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

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

<?php if( is_tag() || is_category() || is_archive { ?>

<?php the_permalink(); ?>" title="<?php the_title(); ?> 

<? } else { ?>

//do something else

} ?>

<?php endwhile; ?>    
<?php else : ?>
<h2 class="center">Not Found</h2>
<?php endif; ?>
0
Chris_O