Мне нужно создать уникальный SKU, состоящий из 3 пользовательских таксономий, каждый раз, когда сохраняется новый продукт, но у меня возникают проблемы с доступом к пользовательским таксономиям. Это то, что у меня есть до сих пор:
add_action( 'save_post', 'set_sku', 10,3 );
function set_sku( $post_id, $post, $update ) {
// Only want to set if this is a new post!
if ( $update ){
return;
}
// Only set for post_type = post!
if ( 'product' !== $post->post_type ) {
return;
}
$producer = strip_tags( get_the_term_list( $post_id, 'producer') );
$vintage = strip_tags( get_the_term_list( $post_id, 'vintage') );
$bottle_size = strip_tags( get_the_term_list( $post_id, 'bottle_size') );
$your_sku = $producer . "|" . $vintage . "|" . $bottle_size;
if( empty( get_post_meta( $post_id, '_sku', true ) ) ) {
update_post_meta( $post_id, '_sku', $your_sku );
}
}
Этот результирующий SKU при создании нового продукта выглядит следующим образом:
||
PS каждой пользовательской таксономии присваивается только одно значение.
Любая помощь приветствуется. Я использую аналогичную функцию на внешнем интерфейсе, которая правильно отображает данные, образец которых здесь:
<?php
$products = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => -1,
) );
if ( $products->have_posts() ) :
while ( $products->have_posts() ) : $products->the_post(); $id = $product->get_id();?>
<tr>
<td><?php echo $producer = strip_tags( get_the_term_list( $id, 'producer') ); ?</td>