1

私の問題は、カスタム分類法をすべて 1 行に並べるのではなく、個別に並べたいということです。

親分類法がLocationありVenue、それらを次のようにリストしたいと思います。

場所: 場所の例

会場:会場例

しかし、私が使用しているコードはそれらを次のように表示します:

場所の例、会場の例

私が使用しているコードは次のとおりです。

<?php  the_terms( $post->ID, 'uk_events' ,  ' '); ?>

uk_events私が使用しているカスタム投稿タイプでlocationありvenue、その投稿タイプの親タクソノミーです。

このような分類法の表示に関する情報が見つからなかったので、誰でもこれを手伝ってもらえますか?

ありがとうございました

4

1 に答える 1

0

まず、カスタム投稿タイプを に渡すつもりがあるかどうかわかりませんthe_terms()

とにかく、私はget_the_terms()あなたが求めている柔軟性をあなたに与えると思います.

例えば:

<?php
    $taxList = array("location", "venue");
    foreach ($taxList as $tax) {
        $terms = get_the_terms( $post->ID, $tax );      
        if ( $terms && ! is_wp_error( $terms ) ) {
            echo "<br/>{$tax}: ";
            $separator = "";
            foreach ( $terms as $term ) {
                echo "{$separator}{$term->name}";
                $separator ", ";
            }
        }
    }
?>

注: これは iPad で入力したものなので、テストできないため、構文エラーや論理エラーが含まれている可能性があります。


更新: OP は、上記のコードが各行にすべてのget_the_terms()分類用語を表示していることをアドバイスします。これは、2 番目のパラメーターで指定された分類によって結果がフィルター処理されていないことを示唆しています。

分類名は大文字と小文字が区別されるため、配列でそれらを指定した方法が正しくない可能性があるのではないかと思いました$taxListが、docco によると、この場合は何もget_the_terms()返さfalseれないはずです出力。

そのため、次のように結果をフィルタリングするのは私たち次第です。

<?php
    $taxList = array("location", "venue");
    foreach ($taxList as $tax) {
        $terms = get_the_terms( $post->ID, $tax );      
        if ( $terms && ! is_wp_error( $terms ) ) {
            echo "<br/>{$tax}: ";
            $separator = "";
            foreach ( $terms as $term ) {
                if (strtolower($term->taxonomy) == strtolower($tax)) {// <-- New (redundant!?) filter.
                    echo "{$separator}{$term->name}";
                    $separator ", ";
                }
            }
        }
    }
?>

更新:さらなる変更として、最初の行を次のように更新することで、現在の投稿で使用されている分類法を自動的に取得して、タイプミスなどを回避することができます。

 $taxList = get_object_taxonomies('uk_events');

さらに、このコードは'uk_events'$post->post_type.

于 2013-04-28T13:32:23.497 に答える