我制作了一个混合网格,其中的内容通过高级自定义字段填充。一切工作正常,除了当我设置一个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 } ?>
我把结束;在错误的地方?我试着把它放在不同的地方,请任何帮助将绝对感激。
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"在这种替代语法中必须是一个单词。它也很少使用。
不能在一行代码中同时使用这两种语法;-)