2

使用以下代码,我将自定义元字段添加到产品类别

    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,任何想法如何使用所有 cargeories 的自定义元值和类别名称填充如下示例中的选择选项下拉列表?我只错过了自定义元值部分 - 似乎类别名称工作正常。

    <?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

        }
    ?>  
4

1 回答 1

2

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

<option value="<?php echo $cat->name; ?>" >
<?php echo get_term_meta($cat->term_id,'custom_term_meta',true); ?>
</option>
于 2021-02-21T22:25:55.927 回答