raxa
raxa

Reputation: 491

Custom Taxonomy and tax_query Issue?

I am working on Plugin development and my plugin name is plugindev.I have a custom post type called team.I have a custom taxonomy Team_Category which is being registered by this code

/***************************taxonomy****************************/
add_action( 'init', 'create_team_taxonomies', 0 );
function create_team_taxonomies() {
    // Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              => _x( 'Team_Categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Team_Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Team_Categories' ),
        'all_items'         => __( 'All Team_Categories' ),
        'parent_item'       => __( 'Parent Team_Category' ),
        'parent_item_colon' => __( 'Parent Team_Category:' ),
        'edit_item'         => __( 'Edit Team_Category' ),
        'update_item'       => __( 'Update Team_Category' ),
        'add_new_item'      => __( 'Add New Team_Category' ),
        'new_item_name'     => __( 'New Team_Category Name' ),
        'menu_name'         => __( 'Team_Category' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => false,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'Team_Category' ),
    );

    register_taxonomy( 'Team_Category', array( 'team' ), $args );
}
/****************************taxanomy end***********************************/

But when I use a tax_query in my WP_Query, I do not get any posts. here is my code

<?php
$taxonomy_name = 'Team_Category';
$get_categories = get_terms($taxonomy_name);
$total_categories = count($get_categories);
// Loop through the obituaries:
for ($i = 0; $i < $total_categories; $i++) {
    ?>
    <div class="row">
        <div class="col-md-4">
            <?php echo $category_name = $get_categories[$i]->name; ?>
        </div>
        <?php
        $args = array(
            'post_type' => 'team',
            'tax_query' => array(
                array(
                    'taxonomy' => 'Team_Category', 
                    'field' => 'slug', 'terms' => $category_name,)
                )
         );

        $query = new WP_Query($args);

        if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            the_title();
        }
        }
        wp_reset_query(); ?>

    </div>

<?php }

It works perfectly without tax_query.I did lot of google but found no suitable result.Any solution to solve this problem .Any help would be highly appreciated

Upvotes: 0

Views: 4764

Answers (2)

silver
silver

Reputation: 5311

register_taxonomy()

$taxonomy (string) (required) The name of the taxonomy. Name should only contain lowercase letters and the underscore character, and not be more than 32 characters long (database structure restriction).

change your taxonomy name from Team_Category to team_category

you should then be able to use argument like this

$arg = array(
    'post_type' => 'team', 
    'taxonomy' => 'team_category',
    'term' => 'term_name',
);

//using tax_query
$mytax = get_terms('your_taxonomy');
$arg = array(
    'post_type' => 'team', 
    'tax_query' => array(
        array(
            'taxonomy' => 'team_category',
            'field'    => 'slug', 
            'terms'    => 'term_slug', //you need to use slug not name $mytax[0]->slug; 

            #or 
            //'field'    => 'name', 
            //'terms'    => 'term_name', //you need to use term name $mytax[0]->name;

            #or 
            //'field'    => 'term_id', 
            //'terms'    => 'term_ID', //you need to use term ID $mytax[0]->term_id;
        ),
    ),
);

Upvotes: 2

Vasim Shaikh
Vasim Shaikh

Reputation: 4512

WP_Query($nivelquery) and the loop will now print every post registered using my custom taxonomy in $terms, and order them by the meta_key 'salary'.

   $terms = get_terms('Team_Category',
        array(
            'orderby' => 'slug',
            'order' => 'ASC',
            'hide_empty' => 1,
            'fields' => 'ids',

        ));

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'vagas_tipo',
            'field' => 'id',
            'terms' => $terms,
       ),
    ),
    'orderby' => 'meta_value',
    'meta_key' => 'salary',
    'order' => 'DESC'
);

$query = new WP_Query($args);

Upvotes: 0

Related Questions