我创建了自定义帖子类型“照片”和自定义分类“catphoto”。
“照片”类型支持“catphoto”和“post_tag”作为分类。
现在我应该为客户端制作一个过滤器。
我需要在 taxonomy-catphoto.php 页面上显示所有属于当前“catphoto”项目的post_tags
。
例如,我有一个自定义帖子类型'照片'的帖子。这篇文章的名字是'Plane'。这篇文章属于' 1961-1981 'catphoto item。此外,它还有“ space ”,“飞机”,“星星”,“战争”等帖子标签。
另外,例如,我有一个“照片”的帖子,其名称是“士兵”。它属于' 1941-1961 'catphoto item并且有' WW2 ',' USA ',' USSR '喜欢发布标签。
现在,当我选择1941-1961 catphoto项目时,我应该得到一个列表: WW2 USA USSR
我试着这样:
if (substr($_SERVER['REQUEST_URI'],1,8) == 'catphoto'){
$cur_terms = get_terms('post_tag');
if ($cur_terms) {
foreach( $cur_terms as $cur_term ){
echo $cur_term->name.'<br/>';
}
}
}
现在我获得了所有catphoto项目的所有帖子标签。如何修复限制明确的catphoto项目。例如,' 1941-1961 '?
答案 0 :(得分:0)
我通过$ _GET查询解决了这个问题。太简单... 首先,我决定创建自己的分类法类型(如post_tags)。它的名字是'mark'。
之后的片段是:
if (substr($_SERVER['REQUEST_URI'],1,8) == 'catphoto'){
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$query = new WP_Query( array('post_type' => 'photo', 'catphoto' => $term->name));
echo '<ul>';
$uniqueTerms = array();
$uniqueSlugs = array();
$uniquePar = $term->slug;
while ( $query->have_posts() ) {
$query->the_post();
$terms = wp_get_post_terms(get_the_ID(), 'mark', array("fields" => "all"));
foreach ($terms as $term1)
{
if(!in_array($term1->name, $uniqueTerms)) {
$uniqueTerms[] = $term1->name;
$uniqueSlugs[] = $term1->slug;
}
}
}
for ($var = 0; $var < count($uniqueTerms); $var++)
echo '<li><a href="'.esc_url( home_url( '/catphoto/' ) ).$uniquePar.'/?mark='.$uniqueSlugs[$var].'">'.$uniqueTerms[$var].'</a></li>';
echo '</ul>';
}
这里和那里的丑陋代码但是它有效。
现在在 taxonomy-catphoto.php 我填写:
$mark = $_GET['mark'];
之后在WP_Query查询中稍作修改
$query = new WP_Query( array( 'post_type' => 'photo', 'posts_per_page'=>56, 'paged'=> $paged, 'catphoto' => $term->name, 'mark' =>$mark) );
最好的问候,伊戈尔