wordpress:如何在单个自定义 post 类型的元术语之间添加逗号
wordpress : how to add commas between meta terms on single custom post type
extendeing 最后一个问题是如何在单个自定义 post 类型上更改元数据的显示,非常感谢 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 - 关键词商业消费者研究)。
我需要你的帮助,请在每组术语后加上 (:) 并在术语之间加上逗号以显示它们,例如:
(- 会议记录:2015 年 - 关键词:商业、消费者、研究)。
我没有测试过这段代码,但我已经对其进行了检查。根据你的描述,应该可以。
<?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()
函数。这将输出数组的每个元素并在除最后一个元素之外的所有元素之后放置一个','。
echo '- '.$taxonomy . ': ' .explode(', ',$holding) . ' ';
} // if ($object_terms)
} // foreach ( $taxonomies as $taxonomy )
?>
希望我做对了。
干杯!
=C=
你的代码没问题,你只需要稍微修改一下输出。试试这个代码:
//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 ')'
}
}
希望有用。
extendeing 最后一个问题是如何在单个自定义 post 类型上更改元数据的显示,非常感谢 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 - 关键词商业消费者研究)。
我需要你的帮助,请在每组术语后加上 (:) 并在术语之间加上逗号以显示它们,例如: (- 会议记录:2015 年 - 关键词:商业、消费者、研究)。
我没有测试过这段代码,但我已经对其进行了检查。根据你的描述,应该可以。
<?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()
函数。这将输出数组的每个元素并在除最后一个元素之外的所有元素之后放置一个','。
echo '- '.$taxonomy . ': ' .explode(', ',$holding) . ' ';
} // if ($object_terms)
} // foreach ( $taxonomies as $taxonomy )
?>
希望我做对了。
干杯!
=C=
你的代码没问题,你只需要稍微修改一下输出。试试这个代码:
//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 ')'
}
}
希望有用。