Казалось бы, простой условный не будет работать?

Я использую Advanced Custom Fields и пытаюсь создать меню навигации, в котором у текущего элемента есть дополнительный класс, чтобы сообщить им, где они находятся.

Вся рассматриваемая структура. Он использует поля повторителя ACF:

<?php if(get_field('main_nav', 53)): ?> <?php while(has_sub_field('main_nav', 53)): ?> <li><a <?php $link1 = the_permalink(); $link2 = the_sub_field('link_url'); if ( $link1 == $link2 ) {?> class="s4-secondary-nav-current" <?php } ?> href="<?php the_sub_field('link_url'); ?>"><?php the_sub_field('link_text'); ?></a></li> <?php endwhile; ?> <?php endif; ?> 

Конкретные условные:

 <?php $link1 = the_permalink(); $link2 = the_sub_field('link_url'); if ( $link1 == $link2 ) { echo 'class="s4-secondary-nav-current"'; } else {} ?> 

Кажется, что происходит, что $ link1 и $ link2 просто печатаются в HTML.

Также пытался сделать что-то подобное, получая такие же результаты, как и выше:

 <?php if ( the_permalink() == the_sub_field('link_url') ) {?> class="s4-secondary-nav-current" <?php } ?> 

Solutions Collecting From Web of "Казалось бы, простой условный не будет работать?"

И the_permalink() и the_sub_field() – это функции, которые выполняют больше, чем вывод строки или URL-адреса.

get_permalink() попробуйте использовать get_permalink() и get_sub_field :

 $link1 = get_permalink(); $link2 = get_sub_field('link_url'); 

the_permalink не делает то, что вы думаете.

Например, это:

 if ( the_permalink() == 'test' ) { 

Такой же как:

 echo get_the_permalink(); if ( '' == 'test' ) { 

the_permalink не возвращает значение и выводит его напрямую. get_the_permalink этого используйте get_the_permalink и проверьте, какие функции выполняются перед их использованием.