0

現在、このコードを使用して、最終的な子を階層分類法で表示しています。たとえば、20 世紀 > 1990 年代 > 1994 とタグ付けされた投稿は、最終的に 1994 のみを表示する必要があります。

以下のコードは、0 で終わり、子が 0 のグループを除いて、ほとんどの親子グループで機能します。

問題は、array() が 20xxxx、1990、1990x を出力する英数字メソッドを使用していることだと思います。したがって、最後の子供は1990年代(1990年ではない)だと考えています。

配列内の文字を無視する方法はありますか? または、array() よりも使用するのに適した順序はありますか?

  <?php

    $terms = get_the_terms( $post->ID, 'From' );

        if ( !empty( $terms ) ) {
            $output = array();
            foreach ( $terms as $term ){
                if( 0 != $term->parent )
                    $output[] = '<a href="' . get_term_link( $term ) .'">' . $term->name . '</a>';
            }

                if( count( $output ) )
                echo '<p><b>' . __('','From') . '</b> ' . end($output) . '</p>';
            }
    ?>

必要に応じて、ここで私のサイトをプレビューすることもできます: dev.jamesoclaire.com

4

2 に答える 2

0

を使用explodeして、a で区切られた各アイテムを分解>して、それらを配列に入れることができます。array_pop次に、配列の最後の項目を取得するために使用できます。

http://us3.php.net/array_pop

最後に、必要に応じて、文字列に含めたくない文字を除外できます。

$string = '20th Century > 1990s > 1994';

// EXPLODE THE ITEMS AT THE GREATER THAN SIGN    
$timeline_items = explode('>', $string);

// POP THE LAST ITEM OFF OF THE ARRAY AND STORE IT IN A VARIABLE
$last_item = trim(array_pop($timeline_items));

質問に直接答えるには、正規表現を使用して数値以外の文字を削除します。

$string = preg_replace('/[^0-9 >]/i', '', $string);

しかし、それはあなたが探しているものを正確に提供しないかもしれません. 例えば:

$string = '20th Century > 1990s > 1994';
$string = preg_replace('/[^0-9 >]/i', '', $string);
print $string;

あなたに与えます:

20 > 1990 > 1994
于 2014-02-13T21:49:25.627 に答える
0

残念ながら私が間違った質問をしていたことに、友人が気づかせてくれました。私がしなければならなかったことは、get_the_terms を実行したときに正しい用語を選択することでした。年のみを表示したかったので、$term->name4 文字でないものは除外しました。

<?php
        $terms = get_the_terms( $post->ID, 'From' );
if ( !empty( $terms ) ) {
    foreach ( $terms as $term ){
        if( ( 0 != $term->parent ) and ( strlen($term->name) == 4 ) )
            $output = '<a href="' . get_term_link( $term ) .'">' . $term->name . '</a>';
    }

    if ( !empty( $output ) )
        echo '<p><b>' . __('','From') . '</b> ' . $output . '</p>';
}
?>
于 2014-02-14T07:23:53.107 に答える