可重用的动态分类短码

时间:2017-06-13 作者:Jason Ryan

好吧,我花了很多时间试图弄明白这一点,在谷歌上花了几个小时,但我似乎无法让它成为动态的。我有一个快捷码,它列出了与我的自定义帖子类型相关的无序分税术语列表,但目前我必须复制(&;为我要显示的每个分类术语粘贴。我正试图找出如何使其动态化,这样我就可以使用相同的短代码并“传入”不同的分类术语。

function list_bar_location_taxonomy( $atts ) {

  global $post;

  $taxonomy = \'location\';
  $locations = get_the_terms( $post->ID, $taxonomy );


  if ( ! empty( $locations ) && ! is_wp_error( $locations ) ) {
    $output = \'<ul class="location-meta">\';

    foreach( $locations as $location ) {
        $output .= \'<li>\';
        $output .= $location->name . \'</li>\';
    }

    $output .= \'</ul>\';
  }

  return $output;
}

add_shortcode( \'bars_location\', \'list_bar_location_taxonomy\' );
我希望分类术语“位置”可以互换,这样我就可以传入任何要在前端使用和显示的分类。e、 g.taxterm2、taxterm3等。

我尝试了以下方法,但没有成功:

function list_bar_location_taxonomy( $atts ) {
  $atts = shortcode_atts( 
    array( 
      \'custom_taxonomy\' => \' \'
    ), $atts
  );

  global $post;

  $locations = get_the_terms( $post->ID, $atts[ \'custom_taxonomy\' ] );


  if ( ! empty( $locations ) && ! is_wp_error( $locations ) ) {
    $output = \'<ul class="location-meta">\';

    foreach( $locations as $location ) {
        $output .= \'<li>\';
        $output .= $location->name . \'</li>\';
    }

    $output .= \'</ul>\';
  }

  return $output;
}

add_shortcode( \'bars_location\', \'list_bar_location_taxonomy\' );
如果能了解我做错了什么,我们将不胜感激。谢谢

1 个回复
SO网友:Jason Ryan

好的,我找到了解决方案,并让它工作到可以用与每个帖子类型相关的任何可用分类法替换短代码的属性的位置:

function custom_taxonomy_list_shortcode( $atts ) {
  $atts = shortcode_atts( array(
    \'term\' => \'location\', //Set whatever default taxonomy you like
  ), $atts );

  global $post;

  $custom_taxonomy = $atts[\'term\']; // Assign it to a var
  $terms = get_the_terms( $post->ID, $custom_taxonomy );

  if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    $output = \'<ul class="cpt-term-list">\';
    foreach( $terms as $term ) {
        $output .= \'<li>\';
        $output .= $term->name . \'</li>\';
    }
    $output .= \'</ul>\';
  }
  return $output;
}
add_shortcode( \'term-list\', \'custom_taxonomy_list_shortcode\' );
add_filter(\'widget_text\', \'do_shortcode\');

结束