如果我理解了这个问题,OP想检查产品在woocommerce中是否有一个类别(分类法是“product\\u cat”),并根据该类别显示产品属性。E、 G.如果产品位于“笔记本电脑”中,则显示“CPU”和“Ram”自定义字段;如果产品位于“硬盘”类别中,则显示“容量”和“RPM”自定义字段。
我说得对吗?如果是这样,您必须在functions.php
function my_product_fields( $postid = 0 ) {
if ( ! intval($postid) ) {
global $post;
if ( empty($post) || ! is_object($post) || ! isset($post->ID) ) return;
$postid = $post->ID;
}
$cats = wp_get_object_terms( $postid, \'product_cat\', array(\'fields\' => \'slugs\') );
$fields = array();
if ( in_array( \'laptop\', $cats ) ) // \'laptop\' is a category slug
$fields[] = array_merge($fields, array(\'cpu\', \'ram\', \'gpu\');
if ( in_array( \'hdd\', $cats ) )
$fields[] = array_merge($fields, array(\'capacity\', \'rpm\');
if ( in_array( \'pc_parts\', $cats ) )
$fields[] = array_merge($fields, array(\'manufacturer\');
if ( in_array( \'warranted\', $cats ) )
$fields[] = array_merge($fields, array(\'warranty\');
///.... and so on
if ( ! empty($fields) ) {
$out = \'<ul>\';
foreach ( $fields as $field ) {
$meta = get_post_meta( $postid, $field, TRUE );
if ( ! empty ( $meta ) ) $out .= \'<li>\' . esc_html( $meta ) . \'</li>\';
}
$out = \'</ul>\';
echo $out;
}
}
之后,当
inside 环路,某处
after the_post()
简单地说:
my_product_fields();
何时
outside 要显示帖子的字段,请使用
my_product_fields($postid);
如果需要,为了使函数更加灵活,可以将字段与类别关联(所有行如
if ( in_array( \'cat_slug\', $cats ) ) $fields[] = array_merge($fields, $array_of_cat_fields)
) 并从函数中要求它。