#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 вы должны иметь доступ ко всей вашей информации о питании.