web-dev-qa-db-ja.com

すべての分類用語を一覧表示する/投稿が添付されている場合はリンクを表示する、それ以外の場合は名前を表示する

カスタム分類からすべての用語を一覧表示する方法を探しています。投稿が添付されている用語のみに、アーカイブページへのリンクを含める必要があります。投稿が添付されていない場合は、名前のみが表示されます。

何か案は?ありがとうございます。

<?php
$taxonomy = 'cat';
$queried_term = get_term_by( 'slug', get_query_var($taxonomy) );
$terms = get_terms($taxonomy);
if ( $terms !== 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
if ( $terms > 0 ) {
    foreach ( $terms as $term ) {
        echo '<li><a href="' . $term->slug . '">' . $term->name .'</a></li>';
    }
}
?>
2
Schakelen

私はあなたの質問をよく理解できませんでしたが、これを試してください。説明はコメントにあります。

// your taxonomy name
$tax = 'post_tag';

// get the terms of taxonomy
$terms = get_terms( $tax, [
  'hide_empty' => false, // do not hide empty terms
]);

// loop through all terms
foreach( $terms as $term ) {

  // if no entries attached to the term
  if( 0 == $term->count )
    // display only the term name
    echo '<h4>' . $term->name . '</h4>';

  // if term has more than 0 entries
  elseif( $term->count > 0 )
    // display link to the term archive
    echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';

}

お役に立てば幸いです。

2
SLH

ご協力いただきありがとうございます!私はいくつかの小さな調整をしました、そして私はそれが今うまくいくことを得ました:

<?php
// your taxonomy name
$tax = 'cat';

// get the terms of taxonomy
$terms = get_terms( $tax, $args = array(
  'hide_empty' => false, // do not hide empty terms
));

// loop through all terms
foreach( $terms as $term ) {

    // Get the term link
    $term_link = get_term_link( $term );

    if( $term->count > 0 )
        // display link to term archive
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

    elseif( $term->count !== 0 )
        // display name
        echo '' . $term->name .'';
}
?>

これは素晴らしい!

1
Schakelen

何かが戻ってきたかどうかをテストするためにSchakelenのコメントを改良しただけ

// your taxonomy name
$tax = 'cat';

// get the terms of taxonomy
$terms = get_terms( $tax, $args = array( 
'hide_empty' => false, // do not hide empty terms
));

    if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){                

        // loop through all terms
        foreach( $terms as $term ) {

            // Get the term link
            $term_link = get_term_link( $term );

            if( $term->count > 0 )
                // display link to term archive
                echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

            elseif( $term->count !== 0 )
                // display name
                echo '' . $term->name .'';
        }
    }
0
Everaldo Matias