Я наконец-то нашел источник ваших проблемных ошибок: вам нужно проверить, что каждый массив терминов не пустой перед циклом foreach, чтобы избежать ошибки.
Я решил полностью пересмотреть ваш код, вочень компактный способ.Попробуйте это:
add_action('woocommerce_after_single_product_summary', 'product_attributes_custom_table', 1 );
function product_attributes_custom_table() {
global $product;
$product_attributes = array();
// Set product attribute taxonomy and labels pairs in an array
$keys_labels = array(
'pa_total-radiometric-flux-mw' => __('240-790nm Total radiometric flux (mW)'),
'pa_mol-s700ma' => __('PAR 400-700nm PPF µmol/s'),
'pa_mol-s300ma' => __('PAR 360-780nm BPF µmol/s'),
'pa_din5031-10-400-700nm' => __('PAR (adjusted DIN5031-10) 400-700nm BPF µmol/s'),
'pa_din5031-10-360-780nm' => __('PAR (adjusted DIN5031-10) 360-780nm BPF µmol/s'),
'pa_adjusted-mccree-400-700' => __('PAR (adjusted McCree) 400-700nm BPF µmol/s'),
'pa_adjusted-mccree-360-780nm' => __('PAR (adjusted McCree) 360-780nm BPF µmol/s'),
);
// Loop through the array
foreach( $keys_labels as $key => $label ){
if( taxonomy_exists($key) ){
$terms = get_the_terms( $product->get_id(), $key );
if($terms){
// Change $terms in a coma separated list of term names
$term_names = join(', ', wp_list_pluck($terms, 'name'));
// Set label and the coresponding term names in the array
$product_attributes[$label] = $term_names;
}
}
}
echo '<table id="parametrics"><tr>';
// First loop for the labels
foreach($product_attributes as $label => $term_names ){
echo '<th class="rotate"><div><span>'.$label.'</span></div></th>';
}
echo '</tr><tr>';
// Second loop for the term names
foreach($product_attributes as $label => $term_names ){
echo '<td>'.$term_names.'</td>';
}
echo'</td></tr></table>';
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает.