wordpress:如何在单个自定义帖子类型上的元词之间添加逗号

时间:2015-01-20 19:00:48

标签: php wordpress custom-post-type meta

extendeing可能会提出有关如何更改单个自定义帖子类型的元数据显示的问题,非常感谢TimRDD提供的有用答案,现在我有另一个问题。 工作生成代码

<?php
//get all taxonomies and terms for this post (uses post's post_type)
foreach ( (array) get_object_taxonomies($post->post_type) as $taxonomy ) {
  $object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'));
  if ($object_terms) {
    echo '- '.$taxonomy;
foreach ($object_terms as $term) {
    echo '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name.'</a> ';
}
    }
  }
}
?>

在单行中显示术语,但它们之间没有逗号,例如: ( - Proceeding2015 - keywordsbusinessconsumerresearch)。

我需要你的帮助,请在术语之间的每一组术语和逗号之后放置(:)以显示它们,例如: ( - 诉讼:2015年 - 关键词:商业,消费者,研究)。

2 个答案:

答案 0 :(得分:0)

我没有测试过这段代码,但是我已经对它进行了测试。根据您的描述,这应该这样做。

<?php
//get all taxonomies and terms for this post (uses post's post_type)

我将其移出fornext

$taxonomies = get_object_taxonomies($post->post_type);

foreach ( $taxonomies as $taxonomy ) {

我把它移到if语句中。如果赋值失败(没有返回任何内容),它将失败if并跳过所有这些。

    if ($object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'))) {

        $holding = array();

        foreach ($object_terms as $term) {

我没有立即输出,而是在构建数组。

            $holding[] = '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name.'</a> ';

        } // foreach ($object_terms as $term)

这是我们输出的地方。我正在使用explode()功能。这将输出数组的每个元素并放置一个&#39;,&#39;毕竟除了最后一个之外。

        echo '- '.$taxonomy . ': ' .explode(', ',$holding) . ' ';

    } // if ($object_terms)

} // foreach ( $taxonomies as $taxonomy )

?>

我希望我做对了。

干杯!

= C =

答案 1 :(得分:0)

您的代码没问题,您只需稍微修改输出即可。试试这段代码:

//get all taxonomies and terms for this post (uses post's post_type)
foreach ((array) get_object_taxonomies($post->post_type) as $taxonomy) {
    $object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'));
    if ($object_terms) {
        echo ': (- ' . $taxonomy . ': ';// I modify the output a bit.
        $res = '';
        foreach ($object_terms as $term) {
            $res .= '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf(__("View all posts in %s"), $term->name) . '" ' . '>' . $term->name . '</a>, ';
        }
        echo rtrim($res,' ,').')';// I remove the last trailing comma and space and add a ')'
    }
}

希望它有效。