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