Как отобразить имя термина, используемое в пользовательском l oop, используя tax_query в wordpress - PullRequest
1 голос
/ 20 июня 2020

Я хочу отображать «имя термина» динамически на основе термина slug, используемого в tax_query.

Мне нужно значение Novedades, которое является именем термина с заголовком «novedades», который я использовать в 'terms' => 'novedades'.

Он должен отображаться в теге h2. Как мне получить это значение?

Мой код:

<?php
    $args = array(
        'post_type' => 'cuadros',
        'post_per_page' => 4,
        'tax_query' => array(
            array(
                'taxonomy' => 'tipo_de_cuadro',
                'field' => 'slug',
                'terms' => 'novedades'
            ),
        ),
    );
    
    $postQuery = new WP_Query($args);
?>

<?php if ( $postQuery->have_posts()) : ?>

<div class="product-carousel">

     <h2> x x x x x x x x x x x x x x </h2>

     <div class="owl-carousel">

     <?php while( $postQuery->have_posts() ) : $postQuery->the_post(); ?>

         <div class="product-carousel__item">
             <img src="<?php the_post_thumbnail_url(); ?>" alt="">
             <h3><?php the_title(); ?></h3>
             <p class="producr-carousel__precio">desde $595</p>
             <a href="<?php the_permalink(); ?>" class="producr-carousel__button">Detalles</a>
         </div>
        
     <?php endwhile; wp_reset_postdata(); ?>

    </div>
</div>

<?php endif; ?>

1 Ответ

1 голос
/ 21 июня 2020

Есть несколько способов сделать это, но, учитывая, что вы знаете, что такое slug, самый простой способ - это использовать функцию get_term_by .

Вы можете использовать заголовок, чтобы получить все детали термина, используя get_term_by, включая имя. Это отдельный от вашего WP_Query, поэтому вы можете использовать его вне l oop.

<?php
// set up variables for the slug & taxonomy - then this can all be changed dynamically if you need to
$term_slug = "novedades";
$term_taxonomy = "tipo_de_cuadro";

// Pass the slug & taxonomy to get_term_by to get all the term details
$term = get_term_by('slug', $term_slug, $term_taxonomy); 
$term_name = $term->name;    // get the name from the term

$args = array(
    'post_type' => 'cuadros',
    'post_per_page' => 4,
    'tax_query' => array(
        array(
            'taxonomy' => $term_taxonomy,
            'field' => 'slug',
            'terms' => $term_slug
        ),
    ),
);

$postQuery = new WP_Query($args);
if ( $postQuery->have_posts()) : ?>

    <div class="product-carousel">

        <!-- you can use your term_name variable here  before you set the_post -->
        <h2><?php echo $term_name; ?></h2>
        <!-- [do stuff....] -->
    </div>
<?php endif; ?>
...