ACF получает значение флажка со страницы таксономии (категории) - PullRequest
1 голос
/ 27 апреля 2020

С ACF я понимаю, как извлечь значения флажков со страницы, но неясно со страницы таксономии, вот что у меня есть до сих пор

У меня есть новый ACF, который добавляет флажки, называемые "местоположение"

ACF Field Name = "location"
Choices = 
zone1 : Zone 1
zone2 : Zone 2
zone3 : Zone 3
zone4 : Zone 4

это мой текущий код, который отображает название зоны

    <div class="selection">
    <?php
        $lines = get_terms( array(
            'taxonomy' => 'zone_line',
            'hierarchical' => true,
            'parent' => 0,
            'hide_empty' => True,
        ) );

        foreach( $lines as $line ):
    ?>


<!-- //start: only show if checkbox zone1 is check -->    
    <a href="<?php echo esc_attr( Center()->link_res_line( $line ) ); ?>">
<?php echo $line->name; ?><span class="fa fa-chevron-right">&nbsp;</span></a>
<!-- //end -->    

        <?php endforeach; ?>
    </div>

CF settings

enter image description here

1 Ответ

1 голос
/ 27 апреля 2020

Чтобы получить значение поля ACF из термина таксономии, вам нужно указать имя таксономии и идентификатор термина вместо просто идентификатора:

get_field( 'field_name', 'taxonomyname_' . term_term_id )

В вашем случае вы должны сделать это :

get_field( 'location', 'zone_line_' . $line->term_id );

Или вы можете передать объект WP_Term:

get_field( 'location', $line );

РЕДАКТИРОВАТЬ

Если вам нужно проверить только zone1:

<div class="selection">
    <?php
    $lines = get_terms( [
        'taxonomy'     => 'zone_line',
        // Added false to hide_empty in case no posts have this term
        'hide_empty'   => FALSE,
    ] );

    foreach ( $lines as $line ):
        $zone = get_field( 'location', $line );

        if ( in_array('zone1', $zone, true ) ) :
            ?>

            <a href="<?php echo esc_attr( Center()->link_res_line( $line ) ); ?>">
                <?php echo $line->name; ?><span class="fa fa-chevron-right">&nbsp;</span></a>

        <?php endif; ?>
    <?php endforeach; ?>
</div>

I tested this in my environment and it works as expected.
...