使用自定义帖子类型和自定义分类的固定链接重写

时间:2012-06-15 作者:dee

我想这很快:

我有:

自定义帖子类型:Food FruitsFruits: Apple, Orange, Cherry如果我输入example.com/food?fruits=Apple,Cherry, 我收到所有帖子Fruits 使用条款AppleCherry, 太棒了!

但我想输入example.com/food/fruits/Apple,Cherryexample.com/food/Apple,Cherry 以获得相同的结果。

我尝试了不同的permalink和重写与自定义帖子相关的插件,但没有任何帮助。

非常感谢。

大卫

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

您必须使用过滤器建立链接结构post_linkpost_type_link:

add_filter(\'post_link\', \'territorio_permalink\', 10, 3);
add_filter(\'post_type_link\', \'territorio_permalink\', 10, 3);

function territorio_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, \'%territorio%\') === FALSE) return $permalink;

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

// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, \'territorio\',\'orderby=term_order\');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug.\'/\'.$terms[1]->slug; //build here
else $taxonomy_slug = \'not-yet\';

return str_replace(\'%territorio%\', $taxonomy_slug, $permalink);
}
在哪里hotel 是职位类型和territorio 是一种层次分类法。

在帖子类型创建中使用:

\'rewrite\' => array( \'slug\' => \'anything-you-want/%territorio%\',\'with_front\' => false),
注意:如果您想要更深入的链接,您的构建应该更深入:

$taxonomy_slug = $terms[0]->slug.\'/\'.$terms[1]->slug.\'/\'.$terms[2]->slug;

结束

相关推荐

Multiple permalinks

我的博客使用/?p=378 多年的permalink构造。这对Google Analytics没有多大帮助,我想把它改为YEAR/MONTH/DAY/post-title 结构有没有一种方法可以做到这一点而不丢失向后兼容性,以便旧的链接可以工作?