我正在为WordPress档案创建分类过滤器。我有复选框工作,所以当选择它们时,他们会根据分类标准将页面重定向到正确的URL。我的问题是,在页面重新加载后,复选框状态将重置为未选中状态。
这是我的代码:
<?php
$workoutmoves = get_terms('Exercise-Types', array('hide_empty' => 0));
?>
<?php if ($workoutmoves): ?>
<h5>Show Me</h5>
<ul class="no-bullet">
<?php foreach($workoutmoves AS $workoutmove): ?>
<li>
<input class="check_box" type="checkbox" value="<?php echo $workoutmove->slug; ?>"><?php echo $workoutmove->name; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
我想在输入字段中添加一个php if语句并回显'checked =“checked”',但我不知道如何获取正确的数据以确定是否应该设置它。
任何见解都将是一个巨大的帮助。感谢。
答案 0 :(得分:3)
您只需要使用get_queried_object()
wp函数获取当前的分类术语,并将此循环更改为:
<?php $term_id = get_queried_object()->term_id; #getting current term_id ?>
<?php foreach($workoutmoves AS $workoutmove): ?>
<li>
<input class="check_box" type="checkbox"
<?php $workoutmove->term_id==$term_id?'checked':''; ?>
value="<?php echo $workoutmove->slug; ?>">
<?php echo $workoutmove->name; ?>
</li>
<?php endforeach; ?>
答案 1 :(得分:2)
我不是100%肯定你在做什么。但是,我相信您要突出显示用户所在的当前页面。您将需要一个if()来执行此操作。我不知道你有哪些数据,可能WP会有一些方法给你页面网址,如:
if( $workoutmove->slug == $currentSlug )
echo 'checked="checked";
如果你找不到WP的网址,可以在PHP中找到$ _SERVER ['REQUEST_URI'];
第2部分:
$bodyParts = explode( ",", $_GET['types'] );
这将为您提供如下数组:
数组('arms','legs','back');
然后,我认为(我不熟悉WP),更改Tom提供的代码中的行:
<?php $workoutmove->term_id==$term_id?'checked':''; ?>
要:
<?php in_array( $workoutmove->term_id, $bodyParts ) ? 'checked' : ''; ?>
或者给你全部:
$bodyParts = explode( ",", $_GET['types'] );
<?php $term_id = get_queried_object()->term_id; #getting current term_id ?>
<?php foreach($workoutmoves AS $workoutmove): ?>
<li>
<input class="check_box" type="checkbox"
<?php in_array( $workoutmove->term_id, $bodyParts ) ? 'checked' : ''; ?>
value="<?php echo $workoutmove->slug; ?>">
<?php echo $workoutmove->name; ?>
</li>
<?php endforeach; ?>
答案 2 :(得分:2)
我会尝试以下方法。
<?php
$types = ( ! empty( $_GET['types'] ) ) ? explode( ',', $_GET['types'] ) : false;
$workoutmoves = get_terms('Exercise-Types', array('hide_empty' => 0));
?>
<?php if ($workoutmoves): ?>
<h5>Show Me</h5>
<ul class="no-bullet">
<?php foreach($workoutmoves AS $workoutmove): ?>
<li>
<input class="check_box" type="checkbox" <?php ( $types && in_array( $workoutmove->slug, $types ) ) ? 'checked' : ''; ?> value="<?php echo $workoutmove->slug; ?>"> <?php echo $workoutmove->name; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>