Php 基于值设置复选框状态

Php 基于值设置复选框状态,php,wordpress,checkbox,Php,Wordpress,Checkbox,我正在为WordPress档案创建一个分类过滤器。我有一些复选框,所以当选中它们时,它们会根据分类法slug将页面重定向到正确的URL。我的问题是,页面重新加载后,复选框状态重置为未选中 这是我的密码: 向我展示 我不是100%确定你在做什么。但是,我相信您希望突出显示用户所在的当前页面。您需要一个if()来执行此操作。我不知道您有哪些可用数据,大概WP会以某种方式向您提供页面url,例如: if( $workoutmove->slug == $currentSlug ) e

我正在为WordPress档案创建一个分类过滤器。我有一些复选框,所以当选中它们时,它们会根据分类法slug将页面重定向到正确的URL。我的问题是,页面重新加载后,复选框状态重置为未选中

这是我的密码:


向我展示

  • 我不是100%确定你在做什么。但是,我相信您希望突出显示用户所在的当前页面。您需要一个if()来执行此操作。我不知道您有哪些可用数据,大概WP会以某种方式向您提供页面url,例如:

    if( $workoutmove->slug == $currentSlug )
        echo 'checked="checked";
    
    如果您无法从WP中找到url,可以在PHP中以$_SERVER['REQUEST_URI']的形式找到它

    # 第2部分:

    $bodyParts = explode( ",", $_GET['types'] );
    
    这将为您提供如下数组:

    数组('arms','legs','back')

    然后,我想(我不熟悉WP),更改Tom提供的代码中的行:

    <?php $workoutmove->term_id==$term_id?'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; ?>
    
    $bodyParts=explode(“,”,$\u GET['types']);
    
  • 值=”“>

  • 您只需使用
    get\u queryed\u 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; ?>
    
    
    
  • 值=”“>
  • 我想试试下面的方法

    <?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; ?>
    
    
    向我展示
    
    • 值=”“>

    当前slug不是最佳方式,您需要ID,使用
    $workoutvove->term\u ID=get\u queryed\u object()->term\u ID
    。另外,echo
    “选中”
    就足够了;)此代码有效
    但是如何在选定状态下显示多个复选框?在什么情况下您希望这样做?您需要为每种情况创建一个if(),需要使用任何可用变量选中一个复选框。因此,我有5个复选框可以更改URL-arms将转到URL?练习类型=arms,但我需要能够选择多个复选框。URL如下所示?练习类型=手臂、腿、现在返回此选项仅允许我选择分类法,并且仅允许第一个“选中”@kslambert my friend。。。在这种情况下,为
    练习类型创建一个自定义页面
    ,并通过GET使用参数进行自定义查询。没有那么难;)
    <?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; ?>