我购买了一个主题,该主题的自定义帖子类型为talent
,现在我正尝试为此帖子类型创建一个自定义的永久链接。
我已将其添加到functions.php
add_filter('post_link', 'talent_permalink', 99, 3);
add_filter('post_type_link', 'talent_permalink', 99, 3);
function talent_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%talent-cat%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'talent_category');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'all';
return str_replace('%talent-cat%', $taxonomy_slug, $permalink);
}
我将%talent-cat%
添加到了永久链接设置的自定义结构中,没有任何改变。
我想要什么
http://example.com/work/%talent-cat%/model/%postname%/
当前正在发生什么
http://example.com/work/talent/%postname%/
我该如何解决?我希望我的代码具有永久链接功能以覆盖/具有任何插件的优先级。
答案 0 :(得分:0)
通常,您需要使用 priority (完成操作)和
更改永久链接的结构register_post_type
,它允许为任何post_type采用任何新结构。我想这里的问题是您没有考虑到这一点,因此请看一下more clean approach。
我想,在没有任何关于您主题的知识的情况下,很难深入探讨这个问题。这是因为某些高级主题不允许考虑这些功能(“意大利面条式代码”和格式不正确的结构/不常见的编程方式在那里很常见)。
在任何情况下,请考虑您正在使用的是最新的URL版本:即,您也可以使用此功能强制重写规则:
flush_rewrite_rules();