在WordPress的“二级产品”标签上添加特定属性?

时间:2018-08-17 06:02:59

标签: wordpress woocommerce

我正在尝试向第二个产品标签添加一些属性,但是我不能。我在Wordpress的Woocommerce产品页面上有6个属性,我想在第一个标签中显示3个属性,在第二个标签中显示其他3个属性。有人可以指导我正确的方法吗?

add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );

function woo_rename_tabs( $tabs ) {
    global $product;

    if( $product->has_attributes() ) { 
        $tabs['additional_information']['title'] = __( 'Product Info' );
    }
return $tabs;
}

add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );

function woo_new_product_tab( $tabs ) {

    $tabs['test_tab'] = array(
        'title'     => __( 'Details', 'woocommerce' ),
        'priority'  => 50,
        'callback'  => 'woo_new_product_tab_content'
    );
return $tabs;
}

function woo_new_product_tab_content() {
    // The new tab content
    ????Please help on this lines?????
}

1 个答案:

答案 0 :(得分:0)

您需要更改 product-attributes.php ,您可以在其中找到

woocommerce>单一产品> product-attributes.php

如果您的子主题中没有该主题,则创建一个主题并将 product-attributes.php 内容复制到新文件中。

我们将使用此文件包括要在其他信息标签中显示的某些属性。

然后在同一目录中创建另一个 product-attributes.php 文件,我们将其称为 product-attributes-custom.php

我们将使用此文件显示您其余的属性。

现在,在新功能中添加以下行:

function woo_new_product_tab_content()
{
    global $product;
    wc_get_template('single-product/product-attributes-custom.php', array(
        'product' => $product,
        'attributes' => array_filter($product->get_attributes(), 'wc_attributes_array_filter_visible'),
        'display_dimensions' => '',
    ));

}

现在打开第一个 product-attributes.php 文件,然后转到第40行,您可以在其中找到以下内容:

<?php foreach ($attributes as $attribute): ?>

并将其更改为以下内容:

<?php foreach ($attributes as $attribute):
$att = ['att1' , 'att2' , 'att3' ]; // Here you can define what attribute you want to display in the tab content 
if (in_array($attribute->get_name(), $att)):
?>

,然后找到包含以下代码的行:

<?php endforeach; ?>

并将其更改为:

<?php endif;endforeach;?>

最后打开第二个文件 product-attributes-custom.php

并执行与上一个相同的操作,并将要显示的其余属性添加到新标签中:

<?php foreach ($attributes as $attribute): ?>

并将其更改为以下内容:

<?php foreach ($attributes as $attribute):
$att = ['att4' , 'att5', 'att6']; // Here you can define what attribute you want to display in the tab content 
if (in_array($attribute->get_name(), $att)):
?>

,然后找到包含以下代码的行:

<?php endforeach; ?>

并将其更改为:

<?php endif;endforeach;?>

就这样:)