WordPress自定义分类-数量/问题-唯一的插件问题

时间:2013-05-24 作者:mmundiff

我有一个网站,我正在为一个季度印刷杂志制作。我正在将所有期刊上的所有文章编入Wordpress帖子。

每一篇文章/帖子都属于一期,每一期都属于一卷(标准杂志材料)。

我认为最好使用自定义分类法,而不是使用类别来表示卷-->问题之间的层次关系。

因此,我对“卷”进行了自定义分类。

这就是我在函数中注册它的方式。php

function add_custom_taxonomies() {
// Add new "Locations" taxonomy to Posts
register_taxonomy(\'volume\', \'post\', array(
    // Hierarchical taxonomy (like categories)
    \'hierarchical\' => true,
    // This array of options controls the labels displayed in the WordPress Admin UI
    \'labels\' => array(
        \'name\' => _x( \'Volumes\', \'taxonomy general name\' ),
        \'singular_name\' => _x( \'Volume\', \'taxonomy singular name\' ),
        \'search_items\' =>  __( \'Search Issues\' ),
        \'all_items\' => __( \'All Issues\' ),
        \'parent_item\' => __( \'Parent Volume\' ),
        \'parent_item_colon\' => __( \'Parent Volume:\' ),
        \'edit_item\' => __( \'Edit Volume\' ),
        \'update_item\' => __( \'Update Volume\' ),
        \'add_new_item\' => __( \'Add New Volume\' ),
        \'new_item_name\' => __( \'New Volume Name\' ),
        \'menu_name\' => __( \'Volume-Issue\' ),
    ),
    // Control the slugs used for this taxonomy
    \'rewrite\' => array(
        \'slug\' => \'volume\', // This controls the base slug that will display before each term
        \'with_front\' => true, // Don\'t display the category base before "/volume/"
        \'hierarchical\' => true // "
    ),
));
}add\\u操作(\'init\',\'add\\u custom\\u taxonomies\',0);

现在的问题是,分类法的slug需要是唯一的,所以URL不是很像:

实例com/volume/volume1/issue-2/

我明白了

实例com/volume/volume-11/issue-1-volume-11/

这似乎是因为第一卷中讨论了Slug“第1期”、“第2期”、“第3期”和“第4期”,Slug需要是唯一的?

这并不是世界上最严重的问题,但我认为,由于本期的分类法是在一个独特的卷下,所以我不会有这个问题。然而,我确实。。。。

不管怎样,有人能提出更好的方法吗?是否可能自定义帖子类型?虽然我认为这是一个完美的答案,但似乎无法让URL和Slug进行合作。

我想推出非常漂亮和可预测的URL,如:

实例com/volume-1/issue-1/example。com/第1卷/第2期/示例。com/第9卷/第3期/

我非常感谢社区对这方面的见解。

谢谢

迈克

2 个回复
最合适的回答,由SO网友:Matthew Boynes 整理而成

有很多方法可以解决这个问题。如果是我,我会做的是make "issue" its own taxonomy.

如果问题是它自己的分类法,那么术语可以是唯一的(事情也不会那么混乱)。一篇文章将属于一卷,也是一期。诀窍是在重写规则中创建层次结构,使问题成为卷的一部分,而文章同时成为卷和卷的一部分。

在这里,我将使您的URL如下所示:

您的article 发布类型声明,您将要设置:

\'rewrite\' => array( \'slug\' => \'volume/%volume%/issue/%issue%\' )
在您的issue 分类法声明,您将要设置:

\'rewrite\' => array( \'slug\' => \'volume/%volume%/issue\' )
最后,您需要将过滤器添加到post_type_linkterm_link 因此自动生成链接不包含%volume%%issue%. 与其重新发明车轮,不如参见“How do I append multiple taxonomies to the URL?“(在众多其他人中)如何做到这一点。

像往常一样,在进行重写更改时,请确保刷新您的重写规则。您可以通过转到设置->永久链接并单击“保存更改”来完成此操作。

SO网友:Fabien Quatravaux

您的自定义分类尝试很好,但我认为您应该使用另一种方法。为什么不使用帖子本身的层次结构呢?默认情况下,帖子不具有层次结构,但页面具有层次结构。这意味着他们可以有父母,可以订购。看看hierarchical 中的参数register_post_type.

如果您为每一卷创建母版页,然后在此卷中为每一期创建一个子页,然后为本期中的每一篇文章创建一个子页,那么您最终将获得正确的URL,不会有任何问题。您甚至可以使用自定义页面模板来区分卷、问题和文章,并使用example.com/volume-1/ 显示此卷问题列表的URL。

结束

相关推荐