Способ сделать информацию о настраиваемых полях Wordpress (хранящуюся в многомерном массиве PHP) доступной для манипулирования в jquery? - PullRequest
0 голосов
/ 21 октября 2011

Вот что я пытаюсь сделать. Я нахожусь на странице категории в WordPress (эта категория на самом деле куча продуктов), и я пытаюсь реализовать калькулятор питания для сообщений. По мере выполнения цикла он отображает некоторую информацию из настраиваемых полей и сохраняет остаток в массиве.

            <?php
        $nutrition_info = array();   //Master Multidimentional Array
        $posts = query_posts($query_string . '&orderby=title&order=asc&posts_per_page=-1');//show all posts in our the category sorted alphabetically
        if ( have_posts() ) : while ( have_posts() ) : the_post(); 
            $prodslug = basename(get_permalink());
            global $post;$thePostID = $post->ID;
            $posttitle = get_the_title();
            // what to render
            ?>
            <div id="<?php echo $prodslug ?>" class="gridprod">
                <a class="prodimg" href="<?php echo get_permalink() ?>">
                    <img src="<?php echo get('imagery_display_image'); ?>" height="200" width="210">
                </a>
                <div class="overlay">
                    <a class="prodname" href="<?php echo get_permalink() ?>"><?php the_title(); ?></a>
                    <a href="javascript:void(0)" class="add softserve-scooped <?php echo $thePostID ?>"> Add </a><br>
                    <a class="prodlink" href="<?php echo get_permalink() ?>">details ...</a>
                </div>
            </div>
            <?php $temp = array(
                title => $posttitle,
                slug => $prodslug,
                calories => get('nutritional_information_calories'),
                totalfat => get('nutritional_information_total_fat'),
                saturated => get('nutritional_information_saturated_fat'),
                trans => get('nutritional_information_trans_fat'),
                cholesterol => get('nutritional_information_cholesterol'),
                sodium => get('nutritional_information_sodium'),
                carbs => get('nutritional_information_total_carbs'),
                fiber => get('nutritional_information_fiber'),
                sugar => get('nutritional_information_sugar'),
                protien => get('nutritional_information_protien'),
                vitamina => get('nutritional_information_vitamin_a'),
                vitamind => get('nutritional_information_vitamin_d'),
                calcium => get('nutritional_information_calcium_')) ?>
                <?php array_push($nutrition_info, $temp); ?>
        <?php endwhile; 
        <?php endif; ?>

Эта часть работает просто отлично. $ nutrition_info заполняется как многомерный массив, как и предполагалось. Так что теперь мне нужно сделать так, чтобы я мог получить доступ к этой информации о команде с помощью jquery (то есть, когда нажата кнопка .add, возьмите все связанные значения в массиве и добавьте их в переменную, которая отображается в калькуляторе.

Я перепробовал несколько методов, и мне не повезло, поэтому я прихожу к вам побежденным в поисках совета. какие-нибудь идеи ... или если мне придется прийти к этому по-другому ... что-нибудь, чтобы привести меня туда.

Заранее спасибо

1 Ответ

1 голос
/ 25 февраля 2012

Проблема в том, что ваша информация о питании хранится в многомерном массиве на PHP, который находится на стороне сервера, и вам необходимо получить к нему доступ через jQuery, который на стороне клиента. Поэтому решение состоит в том, чтобы преобразовать информацию о вашем питании в массив Javascript на стороне клиента. К счастью, PHP предлагает быстрый способ сделать это - после цикла используйте метод json_encode для преобразования вашего массива:

<script type="text/javascript">
var nutrition_info = <?php echo json_encode($nutrition_info); ?>;
</script>

Из обработчика событий jQuery вы сможете получить доступ ко всей информации о вашем питании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...