使用分类法重命名自定义POST Slug

时间:2018-11-11 作者:RWG 2018

我们有一个名为“评论”的自定义帖子,并根据为帖子选择的分类法(制造商)重命名URL。例如,如果选择了名为BENQ的MFG分类法,则帖子的URL将为

领域com/benq/postname不是域。com/reviews/postname/

我收到以下错误:警告:在/中调用的custom\\u post\\u type\\u link()缺少参数3/wp包括/类wp挂钩。php位于第288行,定义于//wp内容/主题/欠陷阱子主题/功能。php在线1192

功能如下:

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

function custom_post_type_link($permalink, $post, $leavename) {
    if (!gettype($post) == \'post\') {
        return $permalink;
    }

    $url_components = parse_url($permalink);
    $post_path = $url_components[\'path\'];
    $post_path = trim($post_path, \'/\');
    $post_name = explode(\'/\', $post_path);
    $post_name = end($post_name);

    if (!empty($post_name)) {

        if ($post->post_type == \'reviews\') {

            $terms = get_the_terms($post->ID, \'manufacturers\');

            if (is_array($terms)) {

                $term = array_pop($terms)->slug;
            }
            else {

                $terms = get_the_terms($post->post_parent, \'manufacturers\');

                if (is_array($terms)) {
                    $term = array_pop($terms)->slug;
                }
                else {
                    $term = \'review\';
                }
            }

            $permalink = str_replace($post_path, \'\' . $term . \'/\' . $post_name . \'\', $permalink);
        }
    }

    return $permalink;
}
你知道这个问题吗?

1 个回复
SO网友:cameronjonesweb

您正在向函数传递3个参数($permalink, $post, $leavename), 但在添加过滤器时,只指定它有2个(最后一个参数add_filter). 更改您的add_filter 调用此:

add_filter( \'post_type_link\', \'custom_post_type_link\', 10, 3 );

结束

相关推荐

Let me choose permalinks

我需要选择一个叫做“mysite”的永久链接。com/1418”,但wordpress不断在永久链接中添加“-2”。通常这意味着我已经有了一个名为“相同”的页面,它位于垃圾箱或其他地方。但这里的情况似乎并非如此。我尝试在设置中重置永久链接,这也没有帮助。我如何使用数字作为页面名称permalink,而不用wordpress在permalink中添加“-2”。