如何根据分类显示自定义字段?

时间:2013-08-03 作者:SadeghAlavizadeh

如何根据类别在主题中显示自定义字段?

例如,在笔记本电脑类别中显示一些自定义字段,在主板类别中显示另一个字段。

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

在您的循环中使用has_term( $term, $taxonomy, $post ).

检查帖子中是否有您要搜索的术语

if ( has_term( \'blue\', \'product_color\', $post ) )
{
    $field = get_post_meta( $post->ID, \'field_name\', TRUE );

    if ( ! empty ( $field ) )
        echo esc_html( $field );
}

SO网友:gmazzap

如果我理解了这个问题,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) ) 并从函数中要求它。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在