WordPress自定义永久链接将被忽略

时间:2019-05-06 18:36:53

标签: wordpress

我购买了一个主题,该主题的自定义帖子类型为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%/

我该如何解决?我希望我的代码具有永久链接功能以覆盖/具有任何插件的优先级。

1 个答案:

答案 0 :(得分:0)

通常,您需要使用 priority (完成操作)和

更改永久链接的结构

register_post_type

,它允许为任何post_type采用任何新结构。我想这里的问题是您没有考虑到这一点,因此请看一下more clean approach

我想,在没有任何关于您主题的知识的情况下,很难深入探讨这个问题。这是因为某些高级主题不允许考虑这些功能(“意大利面条式代码”和格式不正确的结构/不常见的编程方式在那里很常见)。

在任何情况下,请考虑您正在使用的是最新的URL版本:即,您也可以使用此功能强制重写规则:

flush_rewrite_rules();