自定义帖子类型,在多个CPT上重写URL

时间:2012-06-22 作者:scampi

关于Custom post types, taxonomies, and permalinks通过@TheDeadMechanic,上述解决方案工作得很好,重写也很好,但您能否建议如何使用自己的分类法重写多个自定义帖子类型?下面的代码适用于产品下的分类法产品cat,但添加另一个具有分类法的CPT会得到404,因为下面没有包含该代码,如何修改下面的代码以适应多个CPT和分类法?

    function filter_post_type_link($link, $post){
    if ($post->post_type != \'product_listing\')
        return $link;

    if ($cats = get_the_terms($post->ID, \'product_cat\'))
        $link = str_replace(\'%product_cat%\', array_pop($cats)->slug, $link);
    return $link;
    }
 add_filter(\'post_type_link\', \'filter_post_type_link\', 10, 2);
提前感谢

1 个回复
SO网友:Adam

假设提供的代码片段可以工作,那么像这样扩展条件语句将对您有所帮助,

function filter_post_type_link($link, $post)
{
    if ($post->post_type = \'custom_post_type_1\') {

        if ($cats = get_the_terms($post->ID, \'custom_cat_1\'))

             $link = str_replace(\'%custom_cat_1%\', array_pop($cats)->slug, $link);

        return $link;

    } elseif ($post->post_type = \'custom_post_type_2\') {

        if ($cats = get_the_terms($post->ID, \'custom_cat_2\'))

             $link = str_replace(\'%custom_cat_2%\', array_pop($cats)->slug, $link);

        return $link;

    } else {

        return $link;

    }

}

add_filter(\'post_type_link\', \'filter_post_type_link\', 10, 2);

结束

相关推荐

Encoding Method for URLs?

WordPress是否有一种编码URL的方法或API,类似于在URL中使用标题时生成部分URL的方式?我正在编写一个生成URL的插件,并希望使用与其他所有插件相同的方法。例如,我在标题中键入“这是我的博客文章”,然后生成“这是我的博客文章”。