在URL中指定“文章类型”的最佳方式

时间:2014-05-22 作者:Tspesh

我正在帮助一个小博客发布一些不同类型的文章。这些文章类型是跨类别共享的。我们想把文章类型放在URL中。结构如下所示:

www.example。商品/类别/子类别/商品类型/商品名称

我不确定这些文章类型的最佳属性。它们是否应该是子类别(因此每个类别都有一个子类别“如何”、“采访”、“新闻”等。。。

我应该使用标签吗?我可以在URL中指定一个特定标记(而不是所有标记)吗

我应该使用自定义属性吗?

任何指导都是很好的指导,我在零起点。。。

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

这里有一种使用标签添加文章类型的方法。

首先,我们在帖子中添加分类法

add_action(\'init\', \'article_type_init\');

function article_type_init() {
    if (!is_taxonomy(\'article_type\')) {
        register_taxonomy( \'article_type\', \'post\', 
                   array(   
                        \'hierarchical\' => FALSE, 
                        \'label\' => __(\'Article Type\'),  
                        \'public\' => TRUE, 
                        \'show_ui\' => TRUE,
                        \'query_var\' => \'article-type\',
                        \'rewrite\' => true ) );
    }
}
然后我们加入permalink一代,以确保在尝试新的permalink结构时不会收到404

add_filter(\'post_link\', \'article_type_permalink\', 10, 3);
add_filter(\'post_type_link\', \'article_type_permalink\', 10, 3);
function rating_article_type($permalink, $post_id, $leavename) {
    if (strpos($permalink, \'%article-type%\') === FALSE) return $permalink;

        // Get post
        $post = get_post($post_id);
        if (!$post) return $permalink;

        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, \'article_type\');   
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
        else $taxonomy_slug = \'not-rated\'; // add a default tag...

    return str_replace(\'%article-type%\', $taxonomy_slug, $permalink);
}   
最后转到permalink结构(General | permalink),并将其更改为:

/%article-type%/%postname% 
现在,您可以将标记视为永久链接!

结束

相关推荐

Get tags for post_type

我有几个自定义的帖子类型,它们都共享相同的标签。在每个自定义帖子类型的存档上,我想显示使用的标签列表,以及与每个相关的帖子数量。get_tags() 默认情况下,从整个网站内容中提取其所有信息。我找不到get_tags() 函数,我不想执行和密集的查询/函数来手动计数和限制。