2015-01-20 59 views
0

extendeing可能會存在關於如何更改單個自定義帖子類型的元顯示的問題,非常感謝TimRDD提供的有用答案,現在我擁有了另一個題。 工作產生代碼wordpress:如何在單個自定義帖子類型之間添加元字詞之間的逗號

<?php 
//get all taxonomies and terms for this post (uses post's post_type) 
foreach ((array) get_object_taxonomies($post->post_type) as $taxonomy) { 
    $object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all')); 
    if ($object_terms) { 
    echo '- '.$taxonomy; 
foreach ($object_terms as $term) { 
    echo '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf(__("View all posts in %s"), $term->name) . '" ' . '>' . $term->name.'</a> '; 
} 
    } 
    } 
} 
?> 

顯示在一個單一的行,但它們之間沒有逗號,諸如術語: ( - Proceeding2015 - keywordsbusinessconsumerresearch)。

我需要你們的幫助,請在術語之間的每一組術語和逗號之後加上(:)來顯示它們,例如: ( - 繼續:2015 - 關鍵字:商業,消費者,研究)。

回答

0

你的代碼是好的,你只需要修改輸出位。試試這段代碼:

//get all taxonomies and terms for this post (uses post's post_type) 
foreach ((array) get_object_taxonomies($post->post_type) as $taxonomy) { 
    $object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all')); 
    if ($object_terms) { 
     echo ': (- ' . $taxonomy . ': ';// I modify the output a bit. 
     $res = ''; 
     foreach ($object_terms as $term) { 
      $res .= '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf(__("View all posts in %s"), $term->name) . '" ' . '>' . $term->name . '</a>, '; 
     } 
     echo rtrim($res,' ,').')';// I remove the last trailing comma and space and add a ')' 
    } 
} 

希望它有效。

+0

它的工作!非常感謝:) – nisr 2015-01-23 18:58:28

+0

請問有什麼方法可以使代碼顯示特定分類法(如關鍵字)的術語,而不是所有分類法中的所有術語?我試圖用fields'=>'keyword'來替換fields'=>'all',但它不起作用!有什麼建議嗎? – nisr 2015-01-23 19:02:43

0

我還沒有測試過這段代碼,但是我已經弄明白了。根據你的描述,這應該做到這一點。

<?php 
//get all taxonomies and terms for this post (uses post's post_type) 

我將其從fornext中移出。

$taxonomies = get_object_taxonomies($post->post_type); 

foreach ($taxonomies as $taxonomy) { 

我將其移至if聲明中。如果分配失敗(沒有返回),它應該會失敗if並跳過所有這些。

if ($object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'))) { 

     $holding = array(); 

     foreach ($object_terms as $term) { 

而不是立即輸出它,我建立一個數組。

  $holding[] = '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf(__("View all posts in %s"), $term->name) . '" ' . '>' . $term->name.'</a> '; 

     } // foreach ($object_terms as $term) 

這裏是我們做輸出的地方。我正在使用explode()函數。這將輸出數組中的每個元素,並在所有元素之後放置一個',',除了最後一個。

 echo '- '.$taxonomy . ': ' .explode(', ',$holding) . ' '; 

    } // if ($object_terms) 

} // foreach ($taxonomies as $taxonomy) 

?> 

我希望我說得對。

乾杯!

= C =

+0

它也工作了!感謝和乾杯:) – nisr 2015-01-23 18:59:28

相關問題