【问题标题】:How to get a term custom field value in WooCommerce?如何在 WooCommerce 中获取术语自定义字段值?
【发布时间】:2021-01-30 01:15:44
【问题描述】:

我已经为 pa_color 分类术语创建了一个“颜色”自定义字段,通过以下原生方式:

这是我的代码:

add_action( 'pa_color_add_form_fields', 'themename_pa_color_add_term_fields' );
 
function themename_pa_color_add_term_fields( $taxonomy ) {
    ?>
    <div class="form-field">
    <label for="themename_pa_color">PA Color</label>
    <input type="color" name="themename_pa_color" id="themename_pa_color" class="wpColorChoose" />
    <p>Field description may go here.</p>
    </div>
    <?php 
}

add_action( 'pa_color_edit_form_fields', 'themename_pa_color_edit_term_fields', 10, 2 );
 
function themename_pa_color_edit_term_fields( $term, $taxonomy ) {
 
    $value = get_term_meta( $term->term_id, 'themename_pa_color', true );
 
    echo '<tr class="form-field">
    <th>
        <label for="themename_pa_color">PA Color</label>
    </th>
    <td>
        <input name="themename_pa_color" id="themename_pa_color" type="color" class="wpColorChoose" value="' . esc_attr( $value ) .'" />
        <p class="description">Field description may go here.</p>
    </td>
    </tr>';
}

add_action( 'created_pa_color', 'themename_pa_color_save_term_fields' );
add_action( 'edited_pa_color', 'themename_pa_color_save_term_fields' );
 
function themename_pa_color_save_term_fields( $term_id ) {
 
    update_term_meta(
        $term_id,
        'themename_pa_color',
        sanitize_text_field( $_POST[ 'themename_pa_color' ] )
    );
 
}

我怎样才能将他们的价值观带到我需要的地方?

当尝试使用$term-&gt;themename_pa_color 时,它不起作用。

它适用于名称和描述默认字段,例如 $term-&gt;name$term-&gt;description,但不适用于我的字段。

这就是我创建它的方式,它正确保存了值。

【问题讨论】:

  • 可能还有其他问题。它在管理栏中保存值,但这是我在 ` $terms = get_terms( 'pa_color' ); 之后看到的。回声“
    ”; print_r($terms);回声“
    ”;`
  • &lt;pre&gt;Array ( [0] =&amp;gt; WP_Term Object ( [term_id] =&amp;gt; 130 [name] =&amp;gt; Beige [slug] =&amp;gt; beige [term_group] =&amp;gt; 0 [term_taxonomy_id] =&amp;gt; 130 [taxonomy] =&amp;gt; pa_color [description] =&amp;gt; 375sdkfjsdgtjdsop [parent] =&amp;gt; 0 [count] =&amp;gt; 1 [filter] =&amp;gt; raw ) )&lt;/pre&gt;
  • 感谢您的帮助!结果是&lt;div class="d-flex"&gt;&lt;?php $terms = get_terms( 'pa_color' ); if ( ! empty( $terms ) &amp;&amp; ! is_wp_error( $terms ) ){?&gt;&lt;ul&gt;&lt;?php foreach ( $terms as $term ) {?&gt; &lt;li&gt;&lt;a href="&lt;?php echo get_term_link( $term )?&gt;"&gt;&lt;div class="pa_color-bg" style=" border: 1px solid; background: &lt;?php echo get_term_meta( $term-&gt;term_id, 'themename_pa_color', true ); ?&gt; "&gt;&amp;#9679;&lt;/div&gt; &lt;span&gt;&lt;?php echo $term-&gt;name ?&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;?php } } ?&gt;&lt;/ul&gt;&lt;/div&gt;,终于看到了

标签: php wordpress woocommerce metadata taxonomy-terms


【解决方案1】:

您的代码正在向“pa_color”分类中的术语添加自定义字段...所以这是关于 术语元数据,它从未包含在 WP_Term 对象中,因此无法作为来自 WP_Term 对象的属性。

所以答案就在您的代码中。您需要像在您自己的代码中一样使用 WordPress 函数 get_term_meta()(在您的第二个函数中)

$value = get_term_meta( $term->term_id, 'themename_pa_color', true );

echo $value; // Display value

(其中$term-&gt;term_id 是术语 ID,themename_pa_color 是元键)...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2019-01-16
    • 2018-09-27
    • 2019-04-24
    相关资源
    最近更新 更多