Способ сделать пользовательскую информацию о полях WordPress (хранящуюся в многомерном массиве PHP) доступной для манипулирования в jquery?

#php #ajax #wordpress #jquery

#php #ajax #wordpress #jquery

Вопрос:

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

             <?php
        $nutrition_info = array();   //Master Multidimentional Array
        $posts = query_posts($query_string . 'amp;orderby=titleamp;order=ascamp;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 (ie. при нажатии кнопки .add возьмите все связанные значения из массива и добавьте их в переменную, которая отображается в калькуляторе.

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

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

Ответ №1:

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

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

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