使用自定义分类短码显示最近添加的自定义邮政类型

时间:2017-07-01 作者:Jason Ryan

我在这方面尝试了几次,遇到了路障。我会尽可能地描述。。。

我有一个自定义的帖子类型:Bars,我有一个与Bars相关的自定义分类法,名为:Location,Location有几个城市与之相关。e、 g.达拉斯、亚特兰大、费城等地。我创建了一个快捷码,目前可以使用,但我不知道如何获取与“位置”相关的“术语”,并将其显示在前端的最近帖子列表中。仅显示缩略图、标题和日期。

目前我正在使用wp_get_recent_posts 但是读了一些书之后,我应该用它吗?或者我应该使用WP_Query?

这是我的代码:

function recent_cpt_list_display( $atts ) {
  $atts = shortcode_atts( array(
    \'cpt_type\' => \'bars\',
    \'show_posts\' => 5,
    \'cpt_cat\' => \'location\',
  ), $atts, \'cpt-recent-posts\' );

  global $post;

  $cpt_type = $atts[\'cpt_type\'];
  $show_posts = $atts[\'show_posts\'];
  $cpt_cat = $atts[\'cpt_cat\'];

  $cpt_posts = wp_get_recent_posts( array(
    \'post_type\' => $cpt_type,
    \'orderby\' => \'date\',
    \'order\' => \'ASC\',
    \'numberposts\' => $show_posts
  ));

  if ( ! empty( $cpt_posts ) && ! is_wp_error( $cpt_posts ) ) {
    $output = \'<ul class="cpt-recent-posts">\';

    foreach( $cpt_posts as $cpt_post ){
        $output .= \'<li>\';
        $output .= \'<div class="cpt-recent-posts-thumb">\' . get_the_post_thumbnail( $cpt_post[\'ID\'], \'thumbnail\' ) . \'</div>\';
        $output .= \'<div class="cpt-recent-meta">\';
        $output .= \'<a href="\' . get_permalink( $cpt_post["ID"] ) . \'" title="\' . esc_attr( $cpt_post["post_title"] ) . \'" >\' . $cpt_post["post_title"].\'</a>\';
        $output .= \'<div class="cpt-meta">\' . NEED TO OUTPUT LOCATION HERE . \'</div>\';
        $output .= \'<div class="cpt-post-date">\' . get_the_time( get_option( \'date_format\' ), $post->ID ) . \'</div>\';
        $output .= \'</div></li>\';
      }
      $output .= \'<ul>\';
     }
  return $output;
}
add_shortcode( \'cpt-recent-posts\', \'recent_cpt_list_display\' );
任何关于如何更好地做到这一点的见解,我都在洗耳恭听,因为我还在学习。我正在努力减少对插件的依赖,并且真的希望尽可能多地编写代码。

提前谢谢。

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

使用get_the_terms 获取特定帖子的术语:

$terms = get_the_terms( $cpt_post[\'ID\'], \'location\' );

if ( $terms && ! is_wp_error( $terms ) ){
    $output .= \'<div class="cpt-meta">\';
    foreach ( $terms as $term ) {
        $output .= $term->name . \' \';
    }
    $output .= \'</div>\';
}

结束

相关推荐

Onepage with shortcodes

我构建了一个单页wordpress主题,为了在一个页面中显示我的所有页面,我使用了一个循环,但短代码不起作用(例如:联系表单7:表单正在显示但根本不起作用)。这是我的代码: <?php /* Template Name: Pulse one page */ $this_page = $post->ID; ge