在研究了标记/术语函数之后,我成功地编写了一个函数来解决这个问题,并将其封装在一个函数中:
function tags_not_applied( ){
// Get ID of post
$post_id = get_the_ID();
// Get post\'s current tags
$tags_array = wp_get_post_terms( $post_id, \'taxonomy\', array("fields" => "ids") );
if (empty($tags_array))
return;
// Put all tags into array
$args = array(
\'hide_empty\' => false,
\'exclude\' => $tags_array
);
// Get all tags except the ones applied
$terms = get_terms( \'taxonomy\', $args );
if (empty($terms))
return;
// Create list of tags not applied
$html = \'<ul class="tags_not_applied">\';
foreach ( $terms as $term ) {
$term_link = get_term_link( $term->term_id );
$html .= "<li><a href=\'{$term_link}\' title=\'{$term->name} term\' class=\'patch patch-{$term->slug}\'>";
$html .= "{$term->name}</a></li>";
}
$html .= \'</ul>\';
echo $html;
}
需要注意的是
get_terms
默认情况下
hide_empty
像
true
, 这导致了一种假设,即没有任何东西被退回!