我想要覆盖Woocommerce输出属性的方式。默认情况下,属性显示在两列中 - 第1列是标签,第2列是以逗号分隔的属性列表。我想覆盖它并让每个属性显示在它自己的单元格中。这是原始代码:
<?php foreach ( $attributes as $attribute ) :
if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) )
continue;
?>
<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<th><?php echo $woocommerce->get_helper( 'attribute' )->attribute_label( $attribute['name'] ); ?></th>
<td><?php
if ( $attribute['is_taxonomy'] ) {
$values = woocommerce_get_product_terms( $product->id, $attribute['name'], 'names' );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
} else {
// Convert pipes to commas and display values
$values = array_map( 'trim', explode( '|', $attribute['value'] ) );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
}
?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
我一直在想我需要在foreach
内设置另一个td
语句,但我不确定如何设置它。
答案 0 :(得分:1)
基本上,您可以使用该代码输出:
<tr>
<th>atribute label</th>
<td>atribute name</td>
<tr>
因此,您只需要输出类似于“atribute label - atribute name”的内容,因为您只需要删除th标签并将标签代码放在td标签内。
像这样:
<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<td>
<?php echo $woocommerce->get_helper( 'attribute' )->attribute_label( $attribute['name'] ); ?>
<?php
if ( $attribute['is_taxonomy'] ) {
$values = woocommerce_get_product_terms( $product->id, $attribute['name'], 'names' );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
} else {
// Convert pipes to commas and display values
$values = array_map( 'trim', explode( '|', $attribute['value'] ) );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
}
?></td>
<?php endforeach; ?>
</tr>
答案 1 :(得分:1)
我想通了......我需要调整foreach
语句以及单元格在行中的显示方式(以及它们中出现的内容),这是我的最终代码,但是,我会喜欢改善它的建议:
<?php foreach ( $attributes as $attribute ) :
if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) )
continue;
?>
<tr>
<th scope="row"><?php echo $woocommerce->attribute_label( $attribute['name'] ); ?></th>
<?php
if ( $attribute['is_taxonomy'] ) {
$values = woocommerce_get_product_terms( $product->id, $attribute['name'], 'names' );
foreach ( $values as $value ) :
echo '<td>';
echo $value;
echo '</td>';
endforeach;
} else {
$values = array_map( 'trim', explode( '|', $attribute['value'] ) );
foreach ( $values as $value ) :
echo '<td>';
echo $value;
echo '</td>';
endforeach;
}
?>
</tr><?php endforeach; ?>