根据值设置复选框状态

时间:2013-11-30 21:12:55

标签: php wordpress checkbox

我正在为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”',但我不知道如何获取正确的数据以确定是否应该设置它。

任何见解都将是一个巨大的帮助。感谢。

3 个答案:

答案 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; ?>