我正在尝试在自定义帖子模板上显示帖子列表,这些帖子位于“类别”中,并且具有与帖子标题相匹配的特定“标记”。
例如,我有按城市名称发布的帖子,
然后我有几个类别,
对于我对其中一个类别发布的每个帖子,我都会分配一个与城市名称相匹配的帖子标签。
例如,如果我有纽约的新闻,我选择“新闻”类别并为帖子指定“纽约”标签。
当我在纽约的自定义帖子模板页面上时,我想要检索与新闻类别相关联的帖子,这些帖子的标签名称为纽约(帖子标题)。
然而,我的困境是我无法弄清楚如何从帖子的标题动态生成标签名称。
例如
<?php
$tag = wp_title('', FALSE);
query_posts( 'tag=' . $tag . '' );
if ( have_posts() ) while ( have_posts() ) : the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
wp_reset_query(); ?>
但是当使用wp_title()获取标签名称时,它会打印“New York”,并在“New”和“York”之间加上一个空格。这不起作用。
为了让它工作,需要使用连字符“new-york”。但我无法弄清楚如何根据带有连字符的标题代替空格来生成标签名称。
我希望这是有道理的。
我感谢所有帮助的努力。
谢谢。
答案 0 :(得分:0)
在query_posts
函数中,tag
参数指的是slug,而不是名称。不幸的是,query_posts
函数无法接受标记名称;然而,有一个很棒的WP功能可以作为我们的中间人。要根据名称获取标记信息,可以使用:
$term = get_term_by('name', $name_of_tag, 'post_tag');
$term
将是一个包含以下信息的对象:
term_id name slug term_group term_taxonomy_id taxonomy description parent count
例如,您可以使用$term->term_id
获取ID。所以把这些放在一起,你应该能够完成你所需要的:
$tag_name = wp_title('', FALSE);
$term = get_term_by('name', $tag_name, 'post_tag');
query_posts( 'tag_id=' . $term->term_id);
我没有测试wp_title
实际返回的内容,因此我不知道这是否正确地返回了标题,但我相信你;)
来源: