#php #wordpress #woocommerce #foreach
#php #wordpress #woocommerce #инструкция foreach
Вопрос:
Я просмотрел другие ответы «перезаписанная переменная PHP» и все еще не могу понять этого.
Я использую этот PHP, чтобы получить все слизни категории продуктов на одной странице продукта:
global $post; $terms = get_the_terms( $post-gt;ID, 'product_cat' ); if(is_array($terms)){ foreach ($terms as $term) { $product_cat_slug = $term-gt;slug; $product_cat_slugs = ' product_cat-' . $product_cat_slug; echo $product_cat_slugs; } }
Линейные echo $product_cat_slugs;
выходы product_cat-category1 product_cat-category2
.
Проблема в том, что когда я удаляю функцию из приведенной выше и использую ее в другом месте страницы , все, что я получаю для вывода, — это последняя категория, а не обе категории . echo $product_cat_slugs;
lt;?php echo $product_cat_slugs; ?gt;
product_cat-category2
product_cat-category1 product_cat-category2
Что случилось? $product_cat_slugs
кажется, что он перезаписывается, когда находится за пределами foreach; как я могу это предотвратить?
Как мне вывести product_cat-category1 product_cat-category2
данные за пределы цикла?
Комментарии:
1. Да, вы переписываете его внутри цикла. Как ты думаешь, что еще
$product_cat_slugs = ' product_cat-' . $product_cat_slug;
можно было сделать? Решите, как вы хотите сохранить все результаты, например, поместить их все в массив или добавить в существующую строку.2. Я хочу, чтобы все они выводились, как
product_cat-category1 product_cat-category2
при использовании эха$product_cat_slugs;
вне цикла.
Ответ №1:
Могу ли я предложить добавить строку, например
global $post; $terms = get_the_terms( $post-gt;ID, 'product_cat' ); if( is_array( $terms ) ) { $product_cat_slugs = ''; //Define the variable outside of the loop foreach ( $terms as $term ) { $product_cat_slugs .= ' product_cat-' . $term-gt;slug; //Append the slug onto the string that already exists } echo $product_cat_slugs; //Echo the string outside of the loop so it only occurs once. }
Комментарии:
1. Спасибо! Это работает. Я вижу, как пуля прикреплена к струне. Во всех других, казалось бы, похожих ответах использовались разные методы.