Taxonomy structure help

时间:2014-05-18 作者:Shaul

我已经在分类法和帖子类型方面挣扎了一段时间,我真的需要帮助理解什么是适合我的情况的最佳实现。

请看这里:http://shaulzofef.com/netivyah/resources/audio-lessons/

我设置了一些帖子类型;书籍、杂志、文章和有声课程。我设置了一些分类法:语言、作者、教师。教师仅与一个职位类型关联,即音频课程,但语言与所有职位类型关联。我在音频页面上做了一个子菜单,在家长级别上有英语、希伯来语和俄语,下面是每种语言的教师列表。

我有几个问题:1-一些老师用不止一种语言授课,所以如果我点击英语下的Joseph,我怎么才能只列出带有分类术语Joseph和分类术语English的帖子?2-当我点击英语时,它会列出英语音频课程和与分类术语英语相关的其他帖子(文章、书籍等)。如何仅列出音频课程?

我意识到我可以为与帖子类型和分类相关的帖子编写Wordpress查询代码,但这将需要为每个组合编写一个文件。。

我可以为每个帖子类型创建单独的分类法,例如“音频语言”,然后我可以很容易地列出它们,但这似乎不对。。那么如果我真的想要一个将所有英语资源列在一起的选项呢。我是否应该创建层次分类法?。。我弄糊涂了。非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

如果要在存档后过滤音频课程,可以从我链接到的文章中借用,并添加自定义重写规则:

function wpa_add_rewrite_rules() {
    global $wp_rewrite;

    $new_rules = array(
        \'audio-lessons/language/(.+)/?$\' => \'index.php?post_type=audio-lesson&language=\' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( \'generate_rewrite_rules\', \'wpa_add_rewrite_rules\' );
在重新保存永久链接后http://example.com/audio-lessons/language/english 将显示所有英语音频课程。

但是,我不确定您提供的URL是帖子类型存档,而不是自定义页面模板。

如果它是一个页面模板,并且您正在运行多个Wp_Query() 调用您可以注册一个新的查询变量并构建tax_query 从那以后。

function wpa_add_new_query_vars($vars) {   
    $vars[] = \'language\'; // name of variable you want to add       
    return $vars;
}
add_filter( \'query_vars\', \'wpa_add_new_query_vars\', 10, 1 );
您甚至可能不需要这一部分,因为我认为在注册分类法时,查询变量已经注册。

然后您可以这样查询帖子:

$args = array(
    \'post_type\' => \'audio-lesson\'
);

if( $lang = get_query_var( \'language\' ) ){
    $args[\'tax_query\'] = array( array( 
            \'taxonomy\' => \'language\',
            \'field\' => \'slug\',
            \'terms\' => \'$lang\'
        ));
}

$my_posts = new WP_Query( $args );
我不能真正测试这个和tax_query 有时它的数组会让我受挫,所以我不能百分之百肯定它会工作。

然后在任何你想链接到你可以使用的特定语言部分的地方add_query_arg()

结束

相关推荐