在管理产品通用框中获取 WooCommerce 产品变体属性术语

发布时间:2021-02-25 08:59

我使用以下代码在 wp 管理产品数据框的常规选项卡中显示 每个 可变产品的 id 和 sku。知道如何获取可变的产品属性名称 - 在本例中为“测试 1”和“测试 2”?

变化

enter image description here

常规标签

enter image description here

代码

<?php   
    add_action( 'woocommerce_product_options_general_product_data', 'echo_product_id_sku_general_tab' );
    function echo_product_id_sku_general_tab() {
        
        $children_ids = wc_get_product()->get_children();
        $count        = 0;
        
        // Loop through the variations Ids
        foreach( $children_ids as $child_id ) {

            $count++;
            $pr_id_variable = wc_get_product($child_id)->get_id();
            $pr_sku_variable = wc_get_product($child_id)->get_sku();
            
        ?>

        <p class="form-field">
            <label><?php _e( 'Variation', 'woocommerce' ); ?> <?php echo $count; ?> ID</label>
            <input type="text" value="ID<?php echo $pr_id_variable; ?>"></input>
        </p>            
        
        <p class="form-field">
            <label><?php _e( 'Variation', 'woocommerce' ); ?> <?php echo $count; ?> SKU</label>
            <textarea><?php echo $pr_sku_variable; ?></textarea>
        </p>    
        
        <?php } ?>
<?php } ?>
回答1
<块引用>

我在常规选项卡中显示每个可变产品的 id 和 sku。

在 WooCommerce 中,通用选项卡对于可变产品不可用(可见),除非启用税费。在 WooCommerce > 设置 > 常规 > 启用税收。

因为它用于设置父税类和税收状态,所以如果您没有启用税,则不会在那里显示任何内容。


回答你的问题

更换这部分

// Loop through the variations Ids
foreach( $children_ids as $child_id ) {

    $count++;
    $pr_id_variable = wc_get_product($child_id)->get_id();
    $pr_sku_variable = wc_get_product($child_id)->get_sku();
    
?>

<p class="form-field">

// Loop through the variations Ids
foreach( $children_ids as $child_id ) {
    $count++;
    
    $child = wc_get_product( $child_id );
        
    $pr_attribute_name = implode( " / ", $child->get_variation_attributes() );          
    $pr_id_variable = $child->get_id();
    $pr_sku_variable = $child->get_sku();
    
?>

<p> <?php echo $pr_attribute_name; ?> </p>
<p class="form-field">
回答2

对于变体属性名称​​(变体 ID 和 sku),您可以使用以下内容:

add_action( 'woocommerce_product_options_general_product_data', 'echo_product_id_sku_general_tab' );
function echo_product_id_sku_general_tab() {
    global $product_object;

    if( $product_object->is_type('variable') ) {
        $count = 1;

        foreach( $product_object->get_children() as $variation_id ) {
            $variation = wc_get_product($variation_id);
            $name      = array();

            foreach( $variation->get_attributes() as $taxonomy => $term_slug ) {
                $name[] = get_term_by( 'slug', $term_slug, $taxonomy )->name;
            }

            echo '<p><strong>'. sprintf( __("Variation %s Name: %s", "woocommerce"), $count, '</strong>' . implode(' - ', $name) ) .'</p>

            <p class="form-field">
            <label>' . sprintf( __("Variation %s ID", "woocommerce"), $count) . '</label>
                <input type="text" value="ID' . $variation_id . '"></input>
            </p>

            <p class="form-field">
                <label>' . sprintf( __("Variation %s SKU", "woocommerce"), $count) . '</label>
                <textarea>' . $variation->get_sku() . '</textarea>
            </p>';
            $count++;
        }
    }
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。

<块引用>

注意:这仅适用于产品属性分类(以“pa_”开头),但不适用于自定义属性。