0

我正在开发的一个站点(运行 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”)时一切正常,但单击多词标签(例如“操作系统”)时,查询找不到任何帖子。

我了解 WordPress 标签被设计为单个单词,并且我知道我可以通过将所有多单词标签连字符来解决这个问题。

但是,为了便于阅读,我更愿意继续使用非连字符的多词标签。

4

1 回答 1

0

非常感谢您的帮助 David - 最后来自 Wordpress 版主 @alchymyth 的提示让我找到了这个更简单的解决方案:

我正在使用 single_tag_title 并且需要使用标签 slug。这是小步骤的修复(tag.php 中的所有更改):

  1. 为当前标签设置一个变量:

    $current_tag = single_tag_title("", false);
    
  2. 在 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

再次感谢。

于 2013-03-26T10:06:21.820 回答