2016-12-26 4 views
0

Итак, я пытаюсь вернуть строку HTML в инструкции PHP if, но по какой-то причине она не выполняется.WordPress/PHP, если инструкция не выполняется

<?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 отображался в обычном режиме. Любая помощь будет очень восприимчивой

Спасибо.

+1

var_dump ($ page_field); var_dump ($ page_title); убедитесь, что эти значения являются такими же, как вы ожидаете. – Kaylined

+0

@Kaylined I var_dumped them, и они оба печатают строку (0) "" string (22) "коммерческая воздушная хартия" ' –

+0

Итак, ваш первый var пуст. если ("" == "коммерческая воздушная хартия") недействительна. – Kaylined

ответ

0

Похож на то, что петля меня путала. Сначала я зациклился на самой странице, получил заголовок страницы, а затем после этого зациклился на пользовательский тип сообщения. Это позволит выполнить 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> 
Смежные вопросы