web-dev-qa-db-ja.com

カスタム分類法で投稿を取得する

カスタム分類法(fabric_building_types)で投稿を取得していません。私はcat_idcat->nameも取得していますが、投稿を取得できません。

$args = array(
    'type'                     => 'post',
    'child_of'                 => 0,
    'parent'                   => '',
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 1,
    'hierarchical'             => 1,
    'exclude'                  => '',
    'include'                  => '',
    'number'                   => '',
    'taxonomy'                 => 'fabric_building_types',
    'pad_counts'               => false 
); 

$categories = get_categories( $args );

foreach ( $categories as $cat ) {

    // here's my code for getting the posts for custom post type

    $posts_array = get_posts(
        array(
            'showposts' => -1,
            'post_type' => 'fabric_building',
            'tax_query' => array(
                array(
                    'taxonomy' => 'fabric_building_types',
                    'field' => $cat->cat_ID,
                    'terms' => $cat->name,
                )
            )
        )
    );
    print_r( $posts_array ); 
}

誰かが私を手伝ってくれますか。

29
Parth Kumar

納税申告が間違っています、fieldはあなたが照会したい分野であるべきです:term_idname、またはslug -

$posts_array = get_posts(
    array(
        'posts_per_page' => -1,
        'post_type' => 'fabric_building',
        'tax_query' => array(
            array(
                'taxonomy' => 'fabric_building_types',
                'field' => 'term_id',
                'terms' => $cat->term_id,
            )
        )
    )
);
55
Milo

可能であれば、分類法にget_terms()を使うべきです。

<?php 
/* Add your taxonomy. */
$taxonomies = array( 
    'fabric_building_types',
);

$args = array(
    'orderby'           => 'name', 
    'order'             => 'ASC',
    'hide_empty'        => true, 
    'exclude'           => array(), 
    'exclude_tree'      => array(), 
    'include'           => array(),
    'number'            => '', 
    'fields'            => 'all', 
    'slug'              => '', 
    'parent'            => '',
    'hierarchical'      => true, 
    'child_of'          => 0, 
    'get'               => '', 
    'name__like'        => '',
    'description__like' => '',
    'pad_counts'        => false, 
    'offset'            => '', 
    'search'            => '', 
    'cache_domain'      => 'core'
); 

$terms = get_terms( $taxonomies, $args );
foreach ( $terms as $term ) {

// here's my code for getting the posts for custom post type

$posts_array = get_posts(
                        array( 'showposts' => -1,
                            'post_type' => 'fabric_building',
                            'tax_query' => array(
                                array(
                                'taxonomy' => 'fabric_building_types',
                                'field' => term_id,
                                'terms' => $term->name,
                                )
                            )
                        )
                    );
    print_r( $posts_array ); 
}
?>

Codexへのリンク http://codex.wordpress.org/Function_Reference/get_terms

3
Courtney Ivey
global $post; $id = $post->ID;

$cat = get_the_category($id);
$loc = get_the_terms($id, 'taxonomy');
$posts = get_posts(
array('post_type' => 'post',
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'category' => $cat[0]->term_id, 
    'tax_query' => array(
        array(
            'taxonomy' => 'location',
            'field' => 'id',
            'terms' => $loc[0]->term_id,
        )
    )
)
);
print_r($posts);

これはうまくいくはずです。

0
kdgilang

現在の分類法に割り当てられた投稿を取得する

Taxonomy-your_tax.phpに以下のコードを追加することができます。

<div class="a-article-wrapper">

                <?php 

                    $terms = wp_get_post_terms( $post->ID, 'your-taxonomy'); 
                    $terms_ids = [];

                    foreach ( $terms as $term ) {
                        $terms_ids[] = $term->term_id;
                    }

                    $args = array(
                        'post_type' => 'your-post-type',
                        'tax_query' => array(
                            'relation' => 'AND',
                            array(
                                'taxonomy' => 'your-taxonomy',
                                'field'    => 'term_id',
                                'terms'    => $terms_ids
                            )
                        ),
                    );

                    $query = new WP_Query($args);
                    if ( $query->have_posts() ) {
                        while ( $query->have_posts() ) {
                    ?>

                     <div class="row">
                        <div class="col-md-8 a-article-row">
                            <div class="row">
                                <?php $query->the_post();?>
                                <div class="a-post-time">
                                    <span class="a-current-date"><?php the_time('j F, D') ?></span>
                                    <span class="a-current-time"><?php the_time('g:i a') ?></span>
                                </div>
                                <div class="a-article-title">
                                    <?php the_title(); ?> 
                                </div>
                                <div class="a-article-content">
                                    <div id="excerpt"><?php the_excerpt(); ?></div>

                                    <?php the_content(); ?>
                                </div>
                                <div class="a-article-tags">
                                    <?php echo get_the_term_list( get_the_ID(), 'your-taxonomy', '', ',' ); ?>
                                </div>
                            </div>
                        </div>
                    </div>

                    <?php } } ?>
            </div> 
0
Varsha Dhadge