当前,我有这个脚本:
<?php $test = get_categories('taxonomy=item&type=things');?>
<?php foreach($test as $stuff) : ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($stuff->name); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>
<?php endforeach; ?>
这是可行的,但是我不确定如何将其从foreach
循环中删除,以免它不会一遍又一遍地重复jQuery脚本。
总体而言,我正在尝试通过WordPress从get_categories
中获取值,然后从数组中传递name
值,然后在jQuery中检查以将类添加到特定元素一格之内。
我知道我可能会走错路,所以如果有人知道更好,更清洁的方式来解决这个问题,我完全可以公开建议。
答案 0 :(得分:1)
使用array_column()获取所有名称。下面未测试的代码
<?php
$test = get_categories('taxonomy=item&type=things');
$names = array_column($test, 'name'); ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($names); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>
答案 1 :(得分:0)
我想尽可能地将PHP与JS分开,并防止多次迭代。因此,我用PHP处理$names
,然后json_encode
处理JS部分。下面的代码(未经测试)。
<?php
$test = get_categories('taxonomy=item&type=things');
foreach ($test as $stuff) {
$names[] = $stuff->name;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($names); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>