如何在管理单个产品编辑页面中获取产品类别自定义元字段的值?

时间:2021-02-21 17:52:10

标签: wordpress woocommerce wordpress-admin

使用以下代码,我向产品类别添加了一个自定义元字段

    function custom_product_taxonomy_add_new_meta_field() {
        // this will add the custom meta field to the add new term page
        ?>
        <div class="form-field">
            <label for="term_meta[custom_term_meta]"><?php _e( 'Short form', 'woocommerce' ); ?></label>
            <input type="text" name="term_meta[custom_term_meta]" id="term_meta[custom_term_meta]" value="">
            <p class="description"><?php _e( 'Enter a value for this field','woocommerce' ); ?></p>
        </div>
    <?php
    }
    add_action( 'product_cat_add_form_fields', 'custom_product_taxonomy_add_new_meta_field', 10, 2 );

    // Edit term page
    function custom_product_taxonomy_edit_meta_field($term) {

        // put the term ID into a variable
        $t_id = $term->term_id;

        // retrieve the existing value(s) for this meta field. This returns an array
        $term_meta = get_option( "taxonomy_$t_id" ); ?>
        <tr class="form-field">
        <th scope="row" valign="top"><label for="term_meta[custom_term_meta]"><?php _e( 'Short form', 'woocommerce' ); ?></label></th>
            <td>
                <input type="text" name="term_meta[custom_term_meta]" id="term_meta[custom_term_meta]" value="<?php echo esc_attr( $term_meta['custom_term_meta'] ) ? esc_attr( $term_meta['custom_term_meta'] ) : ''; ?>">
                <p class="description"><?php _e( 'Enter a value for this field','woocommerce' ); ?></p>
            </td>
        </tr>
    <?php
    }
    add_action( 'product_cat_edit_form_fields', 'custom_product_taxonomy_edit_meta_field', 10, 2 );
    // Save extra taxonomy fields callback function.
    function save_taxonomy_custom_meta( $term_id ) {
        if ( isset( $_POST['term_meta'] ) ) {
            $t_id = $term_id;
            $term_meta = get_option( "taxonomy_$t_id" );
            $cat_keys = array_keys( $_POST['term_meta'] );
            foreach ( $cat_keys as $key ) {
                if ( isset ( $_POST['term_meta'][$key] ) ) {
                    $term_meta[$key] = $_POST['term_meta'][$key];
                }
            }
            // Save the option array.
            update_option( "taxonomy_$t_id", $term_meta );
        }
    }  
    add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );  
    add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

如果父类别在产品编辑页面中的 ID 为 33,您知道如何使用所有货物的自定义元值和类别名称填充如下示例的选择选项下拉列表吗?我只知道错过了自定义元值部分 - 似乎类别名称工作正常。

    <?php // Populate Dropdown with Brand from Parent Category with ID 33 ?>
    <?php
        $args = array(
            'orderby' => 'name',
            'order' => 'ASC',
            'hide_empty' => 0,
            'taxonomy' => 'product_cat',
            'parent' => '33'
        );

        $categories = get_categories($args);

        foreach($categories as $cat) {                      

        ?>
        <option value="<?php echo $cat->name; ?>" ><?php echo $cat->CUSTOM-META???; ?></option>
        <?php

        }
    ?>  

1 个答案:

答案 0 :(得分:2)

要获取给定类别的自定义元值,您可以使用 get_term_meta 函数。

<option value="<?php echo $cat->name; ?>" >
<?php echo get_term_meta($cat->term_id,'custom_term_meta',true); ?>
</option>
相关问题