我正在一个股票摄影网站上工作,该网站使用简单的数字下载。如果您不熟悉,它有一个自定义的帖子类型,名为Download
还有一种自定义分类法Download Category
.
在该分类法中,我有一些高级术语,例如Scene
, Costume
, Model
, 等
在我的主页上,我列出了所有Costume
子术语(Day Dresses
, Ball Gowns
, 等等)。当用户单击其中一个术语时,它们将被带到我的taxonomy-download_category.php
模板,在那里他们可以看到该术语中所有图像的网格。所以如果他们点击Ball Gowns
在主页上,他们将看到附加到Ball Gowns
子术语。
我正在尝试在我的taxonomy-download_category.php
文件,该文件将显示可以在任何Costume
您正在查看的子术语。使用上述示例,如果您降落在Ball Gowns
第页,您将在中有下载的5种型号(共9种)的顶部看到一个列表Ball Gowns
类别
我遇到的问题是,模型不是自定义的帖子类型,而是Costumes
在Download Category
分类学
到目前为止,我想到的唯一可能的解决方案是:
抓取任何Models
子术语循环浏览每个帖子,查看当前Costumes
用户正在查看的子术语,为每个子术语构建一个term\\u id数组使用我构建的数组来输出列表问题是:
a) 对于似乎应该更简单的事情来说,这似乎有很多逻辑。
b) 我的当前代码不工作。这个filtered_models
变量作为空数组返回。
```
// Get all models
$models = get_term_children(204, \'download_category\');
$filtered_models = [];
// Get ready to query all posts under the Models term
$args = array(
\'posts_per_page\' => -1,
\'orderby\' => \'ASC\',
\'post_type\' => \'download\',
\'download_category\' => \'models\',
\'post_status\' => \'publish\'
);
// Query the posts
$all_models_posts = new WP_Query( $args );
if ( $all_models_posts->have_posts() ) {
while (have_posts()){
the_post();
// See which model(s) this post is attached to
$model_term_args = array(
\'taxonomy\' => \'download_category\',
\'parent\' => 204
);
$matched_models = wp_get_post_terms( $model_term_args );
foreach($matched_models as $matched_model) {
if(has_term(\'download_category\', $term)){
$filtered_models[] = $matched_model;
}
}
}
}
// Reset the query
wp_reset_query();
?>
```
我在Codex上搜索了几个小时,寻找一个函数,该函数可以列出在另一个子词之间共享帖子的子词,但我的搜索结果很差。是否存在这样的功能?
提前感谢您的帮助!
编辑:下面是分类法的视觉层次结构:
下载类别(分类法)服装日礼服舞会礼服型号琥珀色布列塔尼梅根更新:
我意识到$filtered_models
数组在foreach
循环-这是因为我使用wp_get_post_terms
但没有提供正确的论点。查看之后wp_get_post_terms
更确切地说,它似乎不允许选择特定的子术语,所以我决定改为get_term_children
. 我现在收到一个错误(截图:http://files.builtbygood.co/pG3L/5lwBxULw) 但我仍在考虑这一进展。
以下是更新的代码:
```
// Get ready to query all posts under the Models term
$args = array(
\'posts_per_page\' => -1,
\'orderby\' => \'ASC\',
\'post_type\' => \'download\',
\'download_category\' => \'models\',
\'post_status\' => \'publish\'
);
// Query \'dem posts!
$all_models_posts = new WP_Query( $args );
if ( $all_models_posts->have_posts() ) {
while (have_posts()){
the_post();
// Get all models
$models = get_term_children(204, \'download_category\');
$filtered_models = [];
var_dump($models);
foreach($models as $model) {
if(has_term(\'download_category\', $term)){
$filtered_models[] = $matched_model;
}
}
}
}
// Reset that query
wp_reset_query();
?>
```
非常感谢您的帮助!