私は自分の質問に対する答えを見つけようと、広範囲に検索しました。私は私がここで助けを得ることができることを望みます。ここに行きます...
私は現在、私のカスタム分類法の用語を使っています:
<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>
私がやろうとしているのは、それらがリンクとして出力されることなく、リストの中でこれらの同じ事後特定のカスタム分類学用語を取り出すことです。私は以下の「解決策」をすべて試しましたが、どれもうまくいきません。任意の助けがいただければ幸いです。
リストに入れることができない1つの長い文字列で投稿固有の用語を返します。
$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);
すべてのカスタム投稿タイプで使用されているすべての用語のリストを返します。
<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; }
?>
</ul>
何も返しません。
<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>
私はget_the_terms
、get_terms
、およびget_categories
を試しても役に立ちませんでした。
これを試すことができます:
$terms = get_the_terms ($post->id, 'skills');
if ( !is_wp_error($terms)) : ?>
<?php
$skills_links = wp_list_pluck($terms, 'name');
$skills_yo = implode(", ", $skills_links);
?>
<span><?php echo $skills_yo; ?></span>
$terms = wp_get_post_terms($post->ID, 'TAXONOMYNAME');
$count = count($terms);
if ( $count > 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}
strip_tags
を使うだけ
<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>
私は昨日同様の問題に遭遇し、そして次の解決策を思いついた。
function taxonomy_list( $taxonomy ) {
$args = array('order'=>'ASC','hide_empty'=>false);
$terms = get_terms( $taxonomy, $args );
if ( $terms ) {
printf( '<ul name="%s">', esc_attr( $taxonomy ) );
foreach ( $terms as $term ) {
printf( '<li>%s</li>', esc_html( $term->name ) );
}
print( '</ul>' );
}
}
次に、<?php taxonomy_list( 'TAXONOMY ID' ); ?>
をテンプレートファイルに貼り付け、TAXONOMY IDを分類名の名前に置き換えます。
私の元々の用法は、自分の求人掲示板に自分が持っている職種のリストを作成することでした。それぞれが分類のアーカイブにリンクされています。あなたは私自身の Stackoverflow question で私の答えの中で完全な機能を見ることができます。
function term_clean($postid, $term)
{
$terms = get_the_terms($postid, $term);
foreach ($terms as $term) { echo $term->name; };
}
特定の投稿に用語を割り当てるだけの場合は、次の手順を実行します。
<?php $object_terms = wp_get_object_terms( $post_id, 'skills', array( 'fields' => 'names' ) );
if ( $object_terms ) { ?><ul><li><?php echo implode( '</li><li>', $object_terms ); ?></li></ul><?php } ?>
あなたがすべての用語が欲しいならば:
<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>
// to display taxonomy terms without links: separated with commas
// copy this code in your function.php
function get_taxonony_toDisplay($post_id, $taxonomy_name) {
$terms = wp_get_post_terms($post_id, $taxonomy_name);
$count = count($terms);
if ( $count > 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}
}
3つの分類法をコンマで区切って表示する必要があるので、Henryのコードを使用して関数を作成しました。
表示するには、次の行を使用します。
<?php get_taxonony_toDisplay($post->ID, 'your_taxonomy_name' ); ?>
名前ではなくslugで順序付けされた用語が欲しいなら、これを使ってください...
<?php if(has_term('', 'CUSTOM-TAX')) {?>
<?php
$custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
// Make sure we have terms and also check for WP_Error object
if ( $product_terms
&& !is_wp_error( $product_terms )
) {
@usort( $product_terms, function ( $a, $b )
{
return strcasecmp(
$a->slug,
$b->slug
);
});
// Display your terms as normal
$term_list = [];
foreach ( $custom_terms as $term )
//$term_list[] = esc_html( $term->name ); // comment this line out if you want the terms linked and visa versa
$term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // comment this line out if you DON'T want the terms linked and visa versa
echo implode( ', ', $term_list );
}
?>
<?php } else { ?><?php }?>