我正在尝试仅显示具有超过特定数量的帖子的标签。为此,我修改了我的tag-links.php代码,如下所示。但是使用这段代码我得到了一些奇怪的行为。我的页面没有显示内容数量以下的任何标签,没关系,但有时它也会隐藏其他标签。当我刷新页面时,它将显示不同的标签或不显示任何标签。我是php语法的新手,所以我不确定但代码似乎是正确的。你能告诉我代码问题,或任何解决我问题的实用方法。
PS:代码还包含此功能,每个标签都会将用户重定向到具有此特定标签的随机帖子,效果很好。
<?php
$tags = get_the_tags( $post->ID );
$separator = ' ';
$output = '';
if ( $tags ) {
$link = "";
$xnumber = 0; //number for contents with specific tag
echo '<div class="entry-tags">';
echo "<p><span>" . __( ) . "</span>";
foreach ( $tags as $tag ) {
$posts = get_posts("post_type=post&orderby=rand");
foreach($posts as $post) {
if(has_tag($tag->term_id)) {
$xnumber++;
if($xnumber >= 1) {
$link = get_permalink($post);
break 1;
} else { }
} else { }
}
if($xnumber >= 1) {
$output .= '<a href="' . esc_url( $link ) . '" title="'
. esc_attr( sprintf( __( "View all posts tagged %s",
'tracks' ), $tag->name ) ) . '">' . esc_html( $tag->name )
. '</a>' . $separator;
unset($link);
unset($xnumber);
} else {
unset($link);
unset($xnumber);
}
}
echo trim( $output, $separator );
echo "</p>";
echo "</div>";
}
答案 0 :(得分:0)
好的,所以有几点:
1)你没有按照记录的方式使用get_posts函数。你应该传递一系列设置。以下是文档链接:https://developer.wordpress.org/reference/functions/get_posts/
2)get_posts()函数的默认限制为5条记录。而且你以随机顺序带回了列表。因此,有时您获得的5条记录将具有您正在寻找的标签,有时它不会。如果您想要检查更多记录,则需要更改号码。
以下示例显示标记为'jazz'的帖子,在'genre'自定义分类法下,使用'tax_query':
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'jazz'
)
)
);
$postslist = get_posts( $args );
这可能更像你正在寻找的......
使用帖子标签的更好示例:
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $tag
)
)
};