Taxinomy slug作为父存档页面中的变量,没有特定的Taxinomy页面

时间:2017-10-16 作者:kilobyte

我不确定问我想实现什么目标的最佳方式,所以我将在这里描述它。如果有人能找出一种更简洁的方式来问这个问题,或者有人以不同的方式回答了这个问题,请让我知道!

例如,我将描述一个摄影师的WordPress网站,那里有一个公文包归档页面,列出可用的分类法,比如自然、风景和肖像。

这个公文包页面有一个条目网格,显示所有不同的公文包分类。在网格上方,将有一个导航栏,列出这些分类法:

All | Nature | Landscape | Portraits

单击其中一个分类菜单选项时,网格将使用JavaScript过滤到用户选择。例如,单击“Nature”时,仅显示Nature条目,其他所有条目均不可见。

自然分类法也有自己的页面,可以通过slug:mysite访问。com/portfolio/nature-我不希望此页面存在。

我希望能够使用上面的Nature URL转到公文包归档页面,并在页面准备就绪时通过JavaScript将其过滤到Nature条目。

Essentially, I would like the URL mysite.com/portfolio/nature to act as mysite.com/portfolio/?tax=nature - 其中,tax GET var将在PHP中注册(随后输出到JavaScript),然后加载父投资组合归档页面。

我不想在实际的JavaScript实现方面寻求任何帮助,我想知道如何处理URL重写(?)在WordPress中。

实现这一目标的最佳方式是什么?谢谢

2 个回复
SO网友:mmm

我的第一个想法(我不确定它是否最有效)是在文件中进行重定向category.phparchive.php 取决于您的主题。

get_header() 生产线:

$term = get_queried_object();


if (    ("category" === $term->taxonomy)
    &&  (0 !== $term->parent) // if it\'s not a 1st level category
) {

    // get the parent
    $parent = get_term($term->parent);


    // redirection

    $url = get_term_link($parent) . "#" . $term->slug;

    wp_redirect($url);
    exit();

}
此代码仅适用于两级分类法,因为重定向在第一级结束。

SO网友:Milo

首先,注册一个自定义查询变量以传递分类术语。我们希望查询忽略此值,因此我们不会在规则中使用分类法的实际slug。

function wpd_add_query_var( $query_vars ) {
    $query_vars[] = \'wpd_term\';
    return $query_vars;
}
add_filter( \'query_vars\', \'wpd_add_query_var\' );
对于规则,我们只需要设置post_type=slug 要触发post类型存档,其中slug 是向其注册post类型的slug。如果您不确定这是什么,可以在管理员中查看该帖子类型的列表屏幕时,在URL中看到它。我们还将自定义查询变量设置为URL中传递的任何内容。

function wp_add_rewrite_rule() {
    add_rewrite_rule(
        \'portfolio/([^/]+)/?$\',
        \'index.php?post_type=portfolio&wpd_term=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wp_add_rewrite_rule\' );
添加后,请访问设置>永久链接管理页面刷新规则。

然后,您可以在使用解析查询后访问该值get_query_var( \'wpd_term\' ).

还可以看看wp_enqueue_scriptwp_localize_script 用于将该值输入脚本的函数。

结束

相关推荐

Taxonomy Relationships

我创建了两种分类法:制造车型这是针对CPT车辆的。不用说,品牌就是你的品牌(本田/丰田/福特等),然后你会根据品牌选择车型。如何设置Make和Model之间的关系?或者我在这方面完全错了吗?事实上,这应该是一个单一的分类法“Make&;型号\'?我不是在寻找:Vehicle CPT |-> Make |-> Model 我正在寻找:Vehicle CPT |-> Make |--> Model