wordpress custom-post-types – ¿Problema de tax_query y taxonomía personalizada?

Pregunta:

Estoy trabajando en el desarrollo de complementos y el nombre de mi complemento es plugindev . Tengo un tipo de publicación personalizada llamado team . Tengo una taxonomía personalizada Team_Category que está siendo registrada por este código

/***************************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***********************************/

Pero cuando uso un tax_query en mi WP_Query, no obtengo ninguna publicación. aqui esta mi codigo

<?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 }

Funciona perfectamente sin tax_query . tax_query mucho en Google pero no encontré ningún resultado adecuado. Cualquier solución para resolver este problema. Cualquier ayuda sería muy apreciada

Respuesta:

Creo que el problema está en tu código, pero es muy fácil pasarlo por alto. Echemos un vistazo más de cerca a esta parte:

    <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
            )
        )
    );

¿Qué está pasando exactamente aquí? Obtiene el nombre del término y lo almacena como $category_name ( $category_name = $get_categories[$i]->name; ).

Más tarde, usa este valor como slug ( 'field' => 'slug', 'terms' => $category_name ).

Slug y name son cosas diferentes, por lo que existe una gran probabilidad de que Tax_Query no encuentre nada (si el nombre contiene una letra mayúscula, un espacio o cualquier carácter especial, slug será diferente del name).

Entonces debería funcionar bien, si lo cambia para que se vea así:

    <div class="col-md-4">
        <?php echo $get_categories[$i]->name; ?>
    </div>
    <?php
    $args = array(
        'post_type' => 'team',
        'tax_query' => array(
            array(
                'taxonomy' => 'Team_Category', 
                'field' => 'slug',
                'terms' => $get_categories[$i]->slug;
            )
        )
    );

    $query = new WP_Query($args);

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım