php - 在管理产品常规框中获取 WooCommerce 产品变体属性术语

标签 php wordpress woocommerce backend product

我使用以下代码在 wp admin 产品数据框的常规选项卡中显示每个可变产品的 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 } ?>

最佳答案

对于变体属性名称​​(变体 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 文件中。经过测试并有效。

Note: this works for product attribute taxonomies only (starting with "pa_"), but not with custom attributes.

关于php - 在管理产品常规框中获取 WooCommerce 产品变体属性术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66365318/

相关文章:

php - 如何使用 php 执行 shell cmd(python)并打印所有不断更新的输出?

javascript - Ajax 提交 ajax 加载的表单

wordpress - Woocommerce 州/国家/地区列表

php - 在 wordpress 的特定标签中显示 mysql 查询

mysql - Wordpress - 建立数据库连接时出错 - 全新安装 WP

php - 从 Woocommerce 中的子产品类别 ID 获取父产品类别 ID

css - 如何锁定双击到 WooCommerce 中的变体

php - JOIN 查询未产生正确的结果

javascript - 如何在一个固定根上设置 Service Worker

wordpress - polylang插件的默认语言不起作用