【问题标题】:PHP elseif statement not working for advanced custom fields in wordpressPHP elseif 语句不适用于 wordpress 中的高级自定义字段
【发布时间】:2016-10-20 05:07:44
【问题描述】:

我制作了一个混合网格,其中包含通过高级自定义字段填充的内容。一切正常,除了当我设置 if/else 语句以配合我在 WordPress 管理员的 ACF 中设置的复选框时,它会导致 500 错误。这是具有 if/else 语句的主要代码块:

    <div class="watcheroos">
    <?php

    if(count($postslist) > 0) { ?>

    <ul class="list-unstyled">

    <?php 

        $clearfix_counter = 0;

        foreach ($new_list as $index => $post) { 

        $bkg_id =  get_post_thumbnail_id( $post->ID );
        $bkg_src = wp_get_attachment_image_src( $bkg_id, 'medium' );
        $bkg_src_lg = wp_get_attachment_image_src( $bkg_id, 'large' );  

        $network = get_post_meta($post->ID,'network',true);
        $timeofday = get_post_meta($post->ID,'time_of_day',true);
        $date = get_post_meta($post->ID,'date',true);
        $producer = get_post_meta($post->ID,'producer',true);


        if($index %8 == 0 || $index %9 == 0 || $index == 1 ) { ?>

            <?php if ($index == 0) { ?>

                <li class="watcheroo first <?php if($addClass){echo 'widewidth'; } ?>" id="<?php echo sanitize_title($post->post_title); ?>">

                    <div class="content" <?php if($bkg_src_lg[0]){ echo 'style="background-image: url(' . $bkg_src_lg[0] . ');"'; } ?> >

                    </div>
                    <div class="featured-info">
                        <h4><?php echo $post->post_title; ?></h4>
                        <div class="info">
                            <div class="network"><strong>Network:</strong> <?php echo $network; ?></div>
                            <div class="timeofday"><strong>Time-of-day:</strong> <?php echo $timeofday; ?></div>
                            <div class="date"><strong>Date:</strong> <?php echo $date; ?></div>
                            <div class="producer"><strong>Produced by:</strong> <?php echo $producer; ?></div>
                            <?php echo apply_filters('the_content', $post->post_content); ?>
                            <?php 
                                $terms = get_the_terms($post->ID,'watcheroo_production_credits');
                                if($terms) {
                                    echo '<ul class="credits list-unstyled list-inline">'; 
                                    foreach ($terms as $term) {
                                        echo '<li>' . $term->name . '</li>';
                                    }
                                    echo '</ul>';
                                }
                            ?>
                        </div>
                    </div>

                </li>



            <?php } elseif(get_field('wide_box')): { ?>

                <li class="watcheroo wider" id="<?php echo sanitize_title($post->post_title); ?>">
                    <div class="content" <?php if($bkg_src_lg[0]){ echo 'style="background-image: url(' . $bkg_src_lg[0] . ');"'; } ?> >
                        <div class="overlay">
                            <div class="caption">
                                <h4><?php echo $post->post_title; ?></h4>
                                <div class="info">
                                    <div class="network"><strong>Network:</strong> <?php echo $network; ?></div>
                                    <div class="timeofday"><strong>Time-of-day:</strong> <?php echo $timeofday; ?></div>
                                    <div class="date"><strong>Date:</strong> <?php echo $date; ?></div>
                                    <div class="producer"><strong>Produced by:</strong> <?php echo $producer; ?></div>
                                    <?php //echo apply_filters('the_content', $post->post_content); ?>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="expanded-content">
                        <?php echo apply_filters('the_content', $post->post_content); ?>
                        <?php 
                            $terms = get_the_terms($post->ID,'watcheroo_production_credits');
                            if($terms) {
                                echo '<ul class="credits list-unstyled list-inline">'; 
                                foreach ($terms as $term) {
                                    echo '<li>' . $term->name . '</li>';
                                }
                                echo '</ul>';
                            }
                        ?>
                    </div>
                </li>   

            <?php }

        } else { ?>

            <li class="watcheroo <?php if($addClass){echo 'widewidth'; } ?>" id="<?php echo sanitize_title($post->post_title); ?>">
                <div class="content" <?php if($bkg_src[0]){ echo 'style="background-image: url(' . $bkg_src[0] . ');"'; } ?> >
                    <div class="overlay">
                        <div class="caption">
                            <h4><?php echo $post->post_title; ?></h4>
                            <div class="info">
                                <div class="network"><strong>Network:</strong> <?php echo $network; ?></div>
                                <div class="timeofday"><strong>Time-of-day:</strong> <?php echo $timeofday; ?></div>
                                <div class="date"><strong>Date:</strong> <?php echo $date; ?></div>
                                <div class="producer"><strong>Produced by:</strong> <?php echo $producer; ?></div>
                                <?php //echo apply_filters('the_content', $post->post_content); ?>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="expanded-content">
                    <?php echo apply_filters('the_content', $post->post_content); ?>
                    <?php 
                        $terms = get_the_terms($post->ID,'watcheroo_production_credits');
                        if($terms) {
                            echo '<ul class="credits list-unstyled list-inline">'; 
                            foreach ($terms as $term) {
                                echo '<li>' . $term->name . '</li>';
                            }
                            echo '</ul>';
                        }
                    ?>
                </div>
            </li>

        <?php } 

    } ?>    

    </ul>

     <div class="clearfix"></div>

       <?php } endif; ?>

     </div>

     </div>

     <?php foreach ($postslist as $post) { 

        $network = get_post_meta($post->ID,'network',true);
        $timeofday = get_post_meta($post->ID,'time_of_day',true);
        $date = get_post_meta($post->ID,'date',true);
        $producer = get_post_meta($post->ID,'producer',true);
        $bkg_id =  get_post_thumbnail_id( $post->ID );
        $bkg_src = wp_get_attachment_image_src( $bkg_id, 'medium' ); 

    ?> 

      <div id="<?php echo $post->ID . '-' . sanitize_title($post->post_title); ?>" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modalwindow">
     <div class="modal-dialog modal-lg">
       <div class="modal-content">
          <div class="modal-body"> 
           <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
        <?php if($bkg_src[0]){ ?><img class="alignleft" src="<?php echo $bkg_src[0]; ?>" /><?php } ?> 
        <h1 class="modal-title"><?php echo $post->post_title; ?></h1>
        <div class="network"><strong>Network:</strong> <?php echo $network; ?></div>
        <div class="timeofday"><strong>Time-of-day:</strong> <?php echo $timeofday; ?></div>
        <div class="date"><strong>Date:</strong> <?php echo $date; ?></div>
        <div class="producer"><strong>Produced by:</strong> <?php echo $producer; ?></div>
        <?php echo apply_filters('the_content', $post->post_content); ?>
        <div class="clearfix"></div>
      </div>
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
         </div>
     </div>
    </div>
   </div>

   <?php } ?>

我是在放置 endif 吗?在错误的地方?我试着把它放在不同的地方,请任何帮助都将不胜感激。

【问题讨论】:

  • 基本规则:如果您得到 500,请查看网络服务器的错误日志以获取详细信息。在你这样做之前,这一切都是毫无意义的。我们不会通过一堵墙的 wordpress 代码(它是高度致癌的和已知的脑细胞毒素)来猜测问题可能是什么。
  • ugh... endifs.. 阅读日志后,您可能希望用适当的大括号替换它们。 if 和 endifs 很容易被破坏,尤其是在这样的代码中。
  • PHP 解析错误:语法错误,第 58 行 $file 中出现意外 ':' ;)
  • @Kevin_Kinsey 谢谢你的帮助

标签: php wordpress if-statement advanced-custom-fields


【解决方案1】:

PHP 条件的首选语法:

if ($foo) {
   do_something();
} elseif ($bar) {
   do_something_else();
} else {
   do_nothing();
}

也可以单行:

if ($foo) do_something();
elseif ($bar) do_something_else();
else do_nothing();

不过,这通常不是好的做法。

最后,我将引用手册中的另一种语法:

if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // Note the combination of the words.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

请注意,“elseif”在此替代语法中必须是一个单词。也很少用。

但是,您不会在一行代码中同时使用这两种语法;-)

【讨论】:

猜你喜欢
  • 2012-01-17
  • 2015-09-27
  • 2015-01-21
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 2012-08-10
  • 1970-01-01
相关资源
最近更新 更多