首页 > 解决方案 > 我在哪里可以修改 woocomerce 显示产品附加信息的方式?

问题描述

我正在为一个销售二手车的客户开发一个网站,他们有一份关于汽车不同组件有多好的状态列表。例如:轮胎:磨损,变速箱:OK。

我刚刚将这些字段添加为属性(在附加信息选项卡中显示的那些)我们希望以更加图形化的方式显示这些值,图像和突出显示的文本取决于这些属性,我已经准备好了代码。

我在哪里可以修改模板以添加它?或者你能指出我如何实现这一目标的正确方向吗?

标签: wordpresswoocommerce

解决方案


我的建议是使用ACF | 高级自定义字段它是免费的,有很多功能并且不断更新,你也有很多关于插件的文档。

在你的情况下,我会使用 field select

也取决于你有多少领域,但我相信这是要走的路。然后,您可以调用您创建的字段并通过 PHP 输出您的逻辑。

<p>Tires: <?php the_field('tires'); ?></p>

如果你想自定义这些属性的代码,这里是你可以放入模板文件并修改它的 PHP。

<?php $attributes = $product->get_attributes();?>
    <table class="shop_attributes">
        <?php foreach ( $attributes as $attribute ) : ?>
            <tr>
                <th style="text-align: left; padding-right: 20px"><?php echo wc_attribute_label( $attribute->get_name() ); ?></th>
                        <td style="text-align: left;">
                            <?php
                            $values = array();

                            if ( $attribute->is_taxonomy() ) {
                                $attribute_taxonomy = $attribute->get_taxonomy_object();
                                $attribute_values = wc_get_product_terms( $product->get_id(), $attribute->get_name(), array( 'fields' => 'all' ) );

                                foreach ( $attribute_values as $attribute_value ) {
                                    $value_name = esc_html( $attribute_value->name );

                                    if ( $attribute_taxonomy->attribute_public ) {
                                        $values[] = '<a href="' . esc_url( get_term_link( $attribute_value->term_id, $attribute->get_name() ) ) . '" rel="tag">' . $value_name . '</a>';
                                    } else {
                                        $values[] = $value_name;
                                    }
                    }
                } else {
                    $values = $attribute->get_options();

                    foreach ( $values as &$value ) {
                        $value = make_clickable( esc_html( $value ) );
                    }
                }

            echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
                            ?>
            </td>
        </tr>
   <?php endforeach; ?>
</table>

推荐阅读