将jQuery脚本与WordPress foreach循环一起使用

时间:2018-10-22 15:35:45

标签: javascript php jquery wordpress foreach

当前,我有这个脚本:

<?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中检查以将类添加到特定元素一格之内。

我知道我可能会走错路,所以如果有人知道更好,更清洁的方式来解决这个问题,我完全可以公开建议。

2 个答案:

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