WordPressで「ケーススタディ」と呼ばれるカスタム分類法を使用して、すべてのカテゴリから最新のx投稿を表示しようとしています。
すべてのカテゴリ名を見出しリンクとして出力することに成功しました。標準カテゴリ分類から正しいカテゴリに含まれるいくつかの投稿も出力しましたが、私のケーススタディ分類からは表示できません。 'post_type' => 'case-studies'
を$post_args
クエリに追加しても結果が表示されません。
if (have_posts()) :
$tax = 'case-studies';
$cat_args = array(
'orderby' => 'name',
'order' => 'ASC'
);
$categories = get_terms($tax, $cat_args);
foreach($categories as $category) {
echo '<p><a href="' . get_term_link( $category, $tax ) . '" title="'
. sprintf( __( "View all posts in %s" ), $category->name ) . '" '
. '>' . $category->name.'</a></p>';
$post_args = array(
'posts_per_page' => 10,
'category_name' => $category->name
);
$posts = get_posts($post_args);
foreach($posts as $post) { ?>
<a href="<?php echo get_the_permalink(); ?>"><?php echo get_the_title(); ?></a><br/>
<?php }
echo '<p><a href="' . get_term_link( $category, $tax ) . '" title="'
. sprintf( __( "View all posts in %s" ), $category->name ) . '" '
. '>View all posts in ' . $category->name.'</a></p>';
}
endif;
カテゴリパラメータは、カスタム分類では機能しません。代わりにtax_query
を使用する必要があります。
現在のコードでは、(を置き換えます。これはいずれの場合も誤って使用されます。category_name
はslugではなく、nameを取ります)
'category_name' => $category->name
と
'post_type' => 'case-studies',
'tax_query' => array(
array(
'taxonomy' => $tax
'terms' => $category->term_id,
'include_children' => false
)
),
このコードは、カスタム投稿タイプtestaismgalleryの場所分類法のすべてのカテゴリのすべての投稿を表示します。
$args = array(
'number' => $number,
'hide_empty' => $hide_empty,
'include' => $ids
);
$custom_categories = get_terms( 'location', $args );
foreach ( $custom_categories as $catterm){
$arg = Array(
'post_type' => 'testaismgallery',
'posts_per_page' => '-1',
'post_status' => 'publish',
'tax_query' => Array( Array (
'taxonomy' => 'location' ,
'terms' => $catterm->term_id
)) );
$loop = new WP_Query( $arg );
global $post;
?>
<?php
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div class="gallery-content">
<div class="entry-content">
<?php
$post_id = get_the_ID();
$abc = get_post_meta($post_id, event_file, true);
echo "<li><img src='".$abc. "' ></li> ";
?>
</div>
</div>
<?php endwhile;
}
?>