【问题标题】:How can I query Multiple word tags in Wordpress如何在 Wordpress 中查询多个单词标签
【发布时间】:2013-03-24 16:07:35
【问题描述】:

我正在开发的一个网站(运行 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 标记设计为单个单词,并且我知道我可以通过将所有多单词标记连字符来解决此问题。

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

【问题讨论】:

  • 你的问题出在你的代码上,多字标签可以轻松搞定。
  • 知道我可以从哪里开始解决问题吗?我写的查询只返回单个单词或连字符标签的结果。

标签: php wordpress tags


【解决方案1】:

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

我使用的是 single_tag_title 并且需要使用 tag 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

再次感谢。

【讨论】:

    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2016-12-21
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多