WordPress / PHP если оператор не выполняется

Поэтому я пытаюсь вернуть строку HTML в PHP if, однако по какой-то причине она не выполняется.

<?php

                    $args_commercial = array(
                        'post_type' => 'sidebar_post'
                        );

                    $query_commercial = new WP_Query( $args_commercial );

                ?>

                <ul>

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


                    <?php

                    $thumb_id = get_post_thumbnail_id();
                    $thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
                    $thumb_url = $thumb_url_array[0];

                    ?>


                    <li data-id="0">

                    <?php if (have_posts() ) : while (have_posts() ) : the_post(); ?>

                    <?php

                    $page_field = strtolower(get_field( 'page' ));
                    $page_title = strtolower(get_the_title());

                    if ( $page_field == $page_title ): ?>

                        <a href="<?php echo get_field( 'link' ); ?>" style="background-image: url(<?php echo $thumb_url; ?>)"><span><?php the_title(); ?></span></a>

                    <?php endif; ?>

                    </li>


                <?php endwhile; endif; ?>
                <?php endwhile; endif; ?>

                </ul>

Поэтому просто объясните, что я зацикливаюсь в пользовательском типе записи (боковая панель с записями), и в этом пользовательском типе записи можно выбрать, на какой странице вы хотите отобразить пользовательский тип записи.

Именно это представляет переменная $page_field. $Page_title — это просто заголовок страницы. Таким образом, теоретически, если пользователь выбрал поле страницы и фактический заголовок страницы совпадают, HTML будет напечатан, а затем появится боковая панель.

Теперь по какой-то причине HTML в блоке if не выполняется, хотя $page_title и $page_field имеют одно и то же значение (я проверил их, повторив их).

Я действительно не уверен, как отлаживать дальше и убедиться, что HTML отображается условно. Любая помощь будет значительно appreacited

Спасибо.

1 ответ

  1. Похоже, петля меня испортила. Сначала я прошелся по самой странице, получил заголовок страницы,а затем прошелся по типу настраиваемого сообщения. Это позволит блоку if выполняться. Вот код:

    <?php
    
                        $args_commercial = array(
                            'post_type' => 'sidebar_post'
                            );
    
                        $query_commercial = new WP_Query( $args_commercial );
    
                    ?>
    
                    <ul>
    
                    <?php if (have_posts() ) : while (have_posts() ) : the_post(); ?>
    
                    <?php
    
                    $page_title = strtolower(get_the_title());
    
                    ?>
    
                    <?php endwhile; endif; ?>
    
                    <?php if (have_posts() ) : while ($query_commercial->have_posts() ) : $query_commercial->the_post(); ?>
    
    
                        <?php
    
                        $thumb_id = get_post_thumbnail_id();
                        $thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
                        $thumb_url = $thumb_url_array[0];
    
                        ?>
    
    
                        <li data-id="0">
    
                        <?php
    
                        $page_field = strtolower(get_field( 'page' ));
    
                        if ( trim($page_field) == trim($page_title) ): ?>
    
                            <a href="<?php echo get_field( 'link' ); ?>" style="background-image: url(<?php echo $thumb_url; ?>)"><span><?php the_title(); ?></span></a>
    
                        <?php endif; ?>
    
                        </li>
    
                    <?php endwhile; endif; ?>
    
                    </ul>