WordPress永久链接

时间:2017-04-25 11:55:35

标签: php wordpress url-rewriting

我有一个名为patch的自定义帖子类型。每个补丁都有一个元键version,此元的值始终是唯一的。例如:

  • 1.0.0
  • 1.0.1
  • 1.5
  • ...

我想制作特殊的永久链接结构,以便这个URL结构可以访问每个补丁:

www.site.ru/patch/%version%

因此,www.site.ru/patch/1.0.1会导致特定的补丁帖子元关键version值等于1.0.1

我该怎么办?

我想应该有办法以某种方式自动将%version%转换为像index.php?p=*needed_patch_post_id*这样的结构。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码:

add_action('init', 'rb_add_rewrite_rules');
add_filter('post_type_link', 'rb_create_permalinks', 10, 3);

function rb_add_rewrite_rules() {
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag('%version%', '([^/]+)', 'version=');   
    $wp_rewrite->add_permastruct('patch', 'patch/%version%/', false);
}

function rb_create_permalinks($permalink, $post, $leavename) {

    $no_data = 'no-speciality';

    $post_id = $post->ID;

    if($post->post_type != 'patch' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))

    return $permalink;

    $var1 = get_post_meta($post_id, 'version', true);

    $var1 = sanitize_title($var1);

    if(!$var1) { $var1 = $no_data; }

    $permalink = str_replace('%version%', $var1, $permalink);

    return $permalink;
}

我希望这对你有用。感谢。