添加更多结构标签到永久链接?

时间:2014-11-20 02:56:45

标签: wordpress permalinks

我是wordpress的新手。我想知道无论如何都要在固定链接中获取类别ID? 我目前的永久链接是:

http:///example.com/%category%/%post_id%-%postname%.html
http:///example.com/music/1-hello.html

现在我的音乐category_id是2,如何将此category_id添加到固定链接?我想这样:

http:///example.com/2-music/1-hello.html

1 个答案:

答案 0 :(得分:3)

您必须创建自己的固定链接结构选项卡。例如:

add_filter('post_link', 'cat_id_permalink', 10, 3);
add_filter('post_type_link', 'cat_id_permalink', 10, 3);

function cat_id_permalink($permalink, $post_id, $leavename) {
    if (strpos($permalink, '%catid%') === FALSE) return $permalink;

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

    // Get category ID
    $category = end(get_the_category());
    $catid = $category->cat_ID;

    return str_replace('%catid%', $catid, $permalink);
}

请注意,此代码仅在帖子列在一个类别中时才有效。如果帖子可能列在多个类别下,则必须添加更多逻辑。

此代码已添加到functions.php文件中。 WordPress过滤器允许您修改或扩展核心WordPress代码的功能,而无需更改核心文件(并且可能会在下一次WordPress更新时丢失您的更改。)

在返回已处理的网址之前(通过post_linkpost_type_link过滤器)调用上述代码。当函数运行时,它返回新解析的永久链接结构。

//获取帖子代码会返回原始永久链接,如果没有有效的帖子ID,则会保持不变。

如果有有效的帖子ID,则获取类别ID使用get_the_category()来检索类别ID。注意get_the_category()检索类别ID数组,因为帖子可能有多个类别。 end函数返回数组的最后一个元素。

最后,使用str_replace,我们将%catid%选项卡与$ catid变量交换,并返回新的永久链接。