使用jQuery而不是PHP使用Repeater访问高级自定义字段

时间:2014-02-14 作者:tonyf

我正在使用高级自定义字段(带转发器),目前正在使用以下代码访问字段,即:

<?php if( have_rows(\'postage_prices\') ): ?>

    <ul class="slides">

    <?php while( have_rows(\'postage_prices\') ): the_row(); 

        // vars
        $order_qty = get_sub_field(\'order_qty\');
        $strips_rp = get_sub_field(\'strips_rp\');
        $strips_ep = get_sub_field(\'strips_ep\');
        $roll_rp = get_sub_field(\'roll_rp\');
        $roll_ep = get_sub_field(\'roll_ep\');

        ?>

        <li class="slide">

            <?php echo $order_qty; ?>
            <?php echo $strips_rp; ?>
            <?php echo $strips_ep; ?>
            <?php echo $roll_rp; ?>
            <?php echo $roll_ep; ?>

        </li>

    <?php endwhile; ?>

    </ul>

<?php endif; ?>
我的问题是,是否可以通过jQuery访问这些信息,而不是像上面那样使用PHP通过Repeater访问高级自定义字段?

如果有任何关于如何实现这一点的现有示例,我们将不胜感激。

1 个回复
SO网友:cfx

假设您使用wp_enqueue_scripts 并为其分配了一个适当的句柄,此功能将允许您访问postage_prices 通过变量在jQuery中输入字段postagePricesArray.prices. 您需要更换%YOUR_SCRIPT_HANDLE% 使用jQuery脚本的实际句柄,否则此变量可能无法访问

function localize_postage_prices() {
  global $post;
  $id = $post->ID;

  if(have_rows(\'postage_prices\', $id)) {

    $postage_prices_array = array();

    foreach(get_field(\'postage_prices\', $id) as $price) {
      $postage_prices_array[] = array(
        \'order_qty\' => $price[\'order_qty\'],
        \'strips_rp\' => $price[\'strips_rp\'],
        \'strips_ep\' => $price[\'strips_ep\'],
        \'roll_rp\' => $price[\'roll_rp\'],
        \'roll_ep\' => $price[\'roll_ep\']
      );
    }

    //
    // You need to replace %YOUR_SCRIPT_HANDLE% with your script\'s actual handle!
    //
    wp_localize_script(\'%YOUR_SCRIPT_HANDLE%\', \'postagePricesArray\', array(
      \'prices\' => $postage_prices_array
    ));
  }
}
add_action(\'wp_enqueue_scripts\', \'localize_postage_prices\');
然后在jQuery文件中(该文件已排队,句柄为%YOUR_SCRIPT_HANDLE%)您可以访问阵列:

$(function() {

  console.log(postagePricesArray.prices);

});

结束
使用jQuery而不是PHP使用Repeater访问高级自定义字段 - 小码农CODE - 行之有效找到问题解决它

使用jQuery而不是PHP使用Repeater访问高级自定义字段

时间:2014-02-14 作者:tonyf

我正在使用高级自定义字段(带转发器),目前正在使用以下代码访问字段,即:

<?php if( have_rows(\'postage_prices\') ): ?>

    <ul class="slides">

    <?php while( have_rows(\'postage_prices\') ): the_row(); 

        // vars
        $order_qty = get_sub_field(\'order_qty\');
        $strips_rp = get_sub_field(\'strips_rp\');
        $strips_ep = get_sub_field(\'strips_ep\');
        $roll_rp = get_sub_field(\'roll_rp\');
        $roll_ep = get_sub_field(\'roll_ep\');

        ?>

        <li class="slide">

            <?php echo $order_qty; ?>
            <?php echo $strips_rp; ?>
            <?php echo $strips_ep; ?>
            <?php echo $roll_rp; ?>
            <?php echo $roll_ep; ?>

        </li>

    <?php endwhile; ?>

    </ul>

<?php endif; ?>
我的问题是,是否可以通过jQuery访问这些信息,而不是像上面那样使用PHP通过Repeater访问高级自定义字段?

如果有任何关于如何实现这一点的现有示例,我们将不胜感激。

1 个回复
SO网友:cfx

假设您使用wp_enqueue_scripts 并为其分配了一个适当的句柄,此功能将允许您访问postage_prices 通过变量在jQuery中输入字段postagePricesArray.prices. 您需要更换%YOUR_SCRIPT_HANDLE% 使用jQuery脚本的实际句柄,否则此变量可能无法访问

function localize_postage_prices() {
  global $post;
  $id = $post->ID;

  if(have_rows(\'postage_prices\', $id)) {

    $postage_prices_array = array();

    foreach(get_field(\'postage_prices\', $id) as $price) {
      $postage_prices_array[] = array(
        \'order_qty\' => $price[\'order_qty\'],
        \'strips_rp\' => $price[\'strips_rp\'],
        \'strips_ep\' => $price[\'strips_ep\'],
        \'roll_rp\' => $price[\'roll_rp\'],
        \'roll_ep\' => $price[\'roll_ep\']
      );
    }

    //
    // You need to replace %YOUR_SCRIPT_HANDLE% with your script\'s actual handle!
    //
    wp_localize_script(\'%YOUR_SCRIPT_HANDLE%\', \'postagePricesArray\', array(
      \'prices\' => $postage_prices_array
    ));
  }
}
add_action(\'wp_enqueue_scripts\', \'localize_postage_prices\');
然后在jQuery文件中(该文件已排队,句柄为%YOUR_SCRIPT_HANDLE%)您可以访问阵列:

$(function() {

  console.log(postagePricesArray.prices);

});