列出标题中包含特定单词的所有类别

时间:2015-03-24 作者:vyperlook

如何列出标题中有特定单词的所有类别-类别的第一个单词?在类别中。php

例如,如果我正在查看“Green Apple Sells”类别,它将列出所有以“Green”开头的类别

更新,添加了另一个检查:如果类别包含这两个单词中的一个“南”或“北”,则检查下一个单词是否相同,如果不相同,则不要列出类别-只列出与第一个和第二个单词匹配的类别。

第二个检查示例:我有国家和大陆的类别:“南非苹果”、“南非橙子”、“韩国苹果”、“韩国橙子”

现在,当我浏览类别“南非苹果”时,我想显示来自南非的类别(因此必须检查第二个单词是否相同,因为在本例中,标题中有“South”,这是提到的两个单词之一),而不是来自韩国,这就是为什么如果你检查“South”之后的第二个单词,你只能得到正确的国家

非常感谢。

2 个回复
SO网友:matheuscl

您可以尝试下面的代码

$args = array(
  \'orderby\'           => \'name\', 
  \'order\'             => \'ASC\',
  \'name__like\'        => \'%LIKE%\',
  \'description__like\' => \'%LIKE%\',
); 

$terms = get_terms( array( "taxonomy" ), $args );
在中查看更多信息Codex

SO网友:jimihenrik

例如,您可以这样做:

function wpse182116_get_categories_starting_with($word) {
$categories = get_categories();
    if (!empty($categories)) {
        $relevant_ids = array();
        foreach($categories as $c) {
            $cat_name = $c->name;
            if(substr($cat_name, 0, strlen($word)) == $word) { $relevant_ids[] = $c->cat_ID; }
        }
    $term_ids = implode(\',\' , $relevant_ids);
    $list = wp_list_categories( \'&title_li=&style=none&echo=0&taxonomy=category&include=\' . $term_ids );
    $list = rtrim(trim(str_replace(\'<br />\',  \' |\', $list)), \' |\');

    return $list;
    }
}
把它放在你的函数中。php,然后在您的存档中。php您可以像

$title = single_cat_title(\'\', false); echo wpse182116_get_categories_starting_with(strtok($title, " "));
edit: 按注释修复

当然,您可以更改函数中的样式,也可以更改其他样式。现在它们的回声像Green shoes | Green other stuff 等与链接。

我不知道这是否有效率,只是把它搅起来。

EDIT: 等待一秒钟,看到另一个答案,我认为您应该使用args和name\\u like。我做这项研究并不是为了看到这样的东西存在,对不起:D

还请注意,这只检查类别名称前面的单词,因此裤子绿色与我编写的函数不匹配。

结束