获取按 "menu order" 排序的 WooCommerce 特定产品属性术语
Get WooCommerce specific product attribute terms sorted by "menu order"
我想根据当前产品的 menu_order 对 get_the_terms 进行排序,到目前为止我有这个代码:
$colors='';
$terms = get_the_terms( get_the_ID(), 'pa_colors' );
foreach ( $terms as $term ) {
$colors='<pre>'.$term->name.'</pre>';
}
echo $colors;
有两种方法获取按菜单顺序排序的产品属性术语名称(对于定义的产品):
1).使用 wp_get_post_terms()
函数 (WordPress 方式)
WordPress 函数 get_the_terms()
不允许更改 WP_Term_Query
…
因此,您将使用类似的 wp_get_post_terms()
,允许 WP_Term_Query
调整。
$taxonomy = 'pa_color'; // The taxonomy
$query_args = array(
'fields' => 'names',
'orderby' => 'meta_value_num',
'meta_query' => array( array(
'key' => 'order_' . $taxonomy,
'type' => 'NUMERIC'
) )
);
$term_names = wp_get_post_terms( get_the_ID(), $taxonomy, $query_args );
if ( ! empty( $term_names ) ) {
// Output
echo '<pre>' . implode( '</pre><pre>', $term_names ) . '</pre>';
}
2).只需使用 WC_Product
方法 get_attribute()
(WooCommerce 方式)
$product = wc_get_product( get_the_ID() ); // The WC_product Object
$taxonomy = 'pa_color'; // The taxonomy
$names_string = $product->get_attribute('color');
if ( ! empty( $names_string ) ) {
$names_array = explode( ', ', $names_string ); // Converting the string to an array of term names
// Output
echo '<pre>' . implode( '</pre><pre>', $names_array ) . '</pre>';
}
两种方式都有效。
我想根据当前产品的 menu_order 对 get_the_terms 进行排序,到目前为止我有这个代码:
$colors='';
$terms = get_the_terms( get_the_ID(), 'pa_colors' );
foreach ( $terms as $term ) {
$colors='<pre>'.$term->name.'</pre>';
}
echo $colors;
有两种方法获取按菜单顺序排序的产品属性术语名称(对于定义的产品):
1).使用 wp_get_post_terms()
函数 (WordPress 方式)
WordPress 函数 get_the_terms()
不允许更改 WP_Term_Query
…
因此,您将使用类似的 wp_get_post_terms()
,允许 WP_Term_Query
调整。
$taxonomy = 'pa_color'; // The taxonomy
$query_args = array(
'fields' => 'names',
'orderby' => 'meta_value_num',
'meta_query' => array( array(
'key' => 'order_' . $taxonomy,
'type' => 'NUMERIC'
) )
);
$term_names = wp_get_post_terms( get_the_ID(), $taxonomy, $query_args );
if ( ! empty( $term_names ) ) {
// Output
echo '<pre>' . implode( '</pre><pre>', $term_names ) . '</pre>';
}
2).只需使用 WC_Product
方法 get_attribute()
(WooCommerce 方式)
$product = wc_get_product( get_the_ID() ); // The WC_product Object
$taxonomy = 'pa_color'; // The taxonomy
$names_string = $product->get_attribute('color');
if ( ! empty( $names_string ) ) {
$names_array = explode( ', ', $names_string ); // Converting the string to an array of term names
// Output
echo '<pre>' . implode( '</pre><pre>', $names_array ) . '</pre>';
}
两种方式都有效。