次のようにして、投稿が割り当てられている用語の一覧を表示しています。
<?php
$terms = get_the_terms( $post->ID , 'winetype' );
$sep = ', ';
foreach ( $terms as $term ) {
echo $term->name;
echo $sep;
} ?>
しかし、出力をアルファベットの降順(Z-A)にしたいのですが、これについてorder => DESCを使用する方法が見つかりません。何か提案がありますか?
進んでくれてありがとう。
あなたはこれを試すことができます:
// Get posts terms
$terms = wp_get_post_terms( $post->ID, 'winetype', array( 'order' => 'DESC') );
$sep = ', ';
foreach ( $terms as $term ) {
echo $term->name;
echo $sep;
}
代わりにwp_get_post_terms()
を使用してください。
<?php
$names = wp_get_post_terms(
$post->ID,
'winetype',
array(
'orderby' => 'name',
'order' => 'DESC',
'fields' => 'names'
);
echo implode(', ', $names); // to avoid trailing separator
更新 @Pieterのおかげで/グーセンのコメント。
$terms = get_the_terms( $post->ID , 'winetype' );
if($terms) { // check the variable is not empty
// compare terms
function cmp($a, $b)
{
return strcmp($b->name, $a->name); // in reverse order to get DESC
}
// sort terms using comparison function
usort($terms, 'cmp');
// get names from objects
function my_function($z)
{
return $z->name;
}
// map names array using my_function()
$term_names = array_map('my_function', $terms);
// define separator
$separator = ', ';
// get string by imploding the array using the separator
$term_names = implode($separator, $term_names);
echo $term_names; // OR return
}