我正在开发的一个网站(运行WordPress 3.4.2)有一个带有标签列表的侧边栏。
当点击一个标签链接时,用户被带到tag.php,其中包含一个自定义查询,用于显示与所讨论的标签相关的所有帖子。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array( 'post_type' => array('blog','news'), 'tag'=>single_tag_title('', false), 'posts_per_page' => -1, 'caller_get_posts' => 1, 'paged' => $paged));
后面是一个循环,吐出每篇文章的摘要。当一个单字标签(例如:'windows'),但是当一个多词标签(例如。点击'operating system'),查询没有找到任何帖子。
我知道WordPress标签被设计成单个单词,我知道我可以通过将所有多单词标签连字符来解决这个问题。
但是,为了便于阅读,我更愿意继续使用无连字符的多词标记。
非常感谢你的帮助,David -最后,Wordpress版主@alchymyth的一个提示让我找到了这个更简单的解决方案:
我正在使用single_tag_title,并且需要使用标签段符。下面是小步骤的修复(所有更改都在tag.php中):
-
为当前标签设置一个变量:
$current_tag = single_tag_title("", false);
-
在query_posts更改:
'tag'=>single_tag_title('', false)
……
'tag_slug__and'=>array($current_tag)
…完整的代码是:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$current_tag = single_tag_title("", false);
query_posts(array( 'post_type' => array('blog', 'news'), 'tag_slug__and'=>array($current_tag), 'posts_per_page' => -1, 'caller_get_posts' => 1, 'paged' => $paged));
这是论坛帖子:http://wordpress.org/support/topic/query_posts-does-not-return-results-for-multiple-word-tags?replies=3 post - 4018519
再次感谢。