Wordpress - 自定义帖子类型和自定义永久链接结构错误

时间:2011-03-25 12:45:31

标签: php wordpress custom-post-type

我有3个自定义帖子类型设置,我为每个创建了自定义永久链接结构。我遇到的问题是我使用自定义固定链接设置的第三个自定义帖子类型正在用于前两个。

示例:

  • 分类
  • 就业
  • 赞助

以上是帖子类型,我将自定义永久链接结构设置为(对于每个): / post_type / POST_ID /

现在,上面的顺序是他们设置的顺序,赞助接管了所有这些顺序。例如:

/classified/100/
/employment/101/
/sponsorship/102/

以上都使用永久链接:

/sponsorship/100/
/sponsorship/101/
/sponsorship/102/

发生此错误的错误是什么?它是永久链接结构错误吗?下面是我用于为每个创建自定义永久链接结构的代码。唯一的区别是%c_id%更改为分类,就业和赞助的%e_id%和%s_id%。此外,对“分类广告”的任何提及都分别改为就业和赞助。

add_action('init', 'classifieds_rewrite');
function classifieds_rewrite() {
    global $wp_rewrite;

    $queryarg = 'post_type=classifieds&p=';
    $wp_rewrite->add_rewrite_tag('%c_id%', '([^/]+)', $queryarg);
    $wp_rewrite->add_permastruct('classifieds', '/classifieds/%c_id%/', false);
}

add_filter('post_type_link', 'classifieds_permalink', 1, 3);
function classifieds_permalink($post_link, $id = 0) {
    global $wp_rewrite;
    $post = &get_post($id);
    if ( is_wp_error( $post ) )
        return $post;
    $newlink = $wp_rewrite->get_extra_permastruct('classifieds');
    $newlink = str_replace("%c_id%", $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您注册了3种不同的帖子类型,并且您正在尝试重写每种帖子类型,以便他们的帖子在帖子ID之前。从每个帖子类型的slug开始,当你注册每个帖子类型时,你似乎没有发出重写,这是正确的吗?如果没有,您可以通过在注册每个帖子类型时添加以下内容和其他参数来处理此部分。

'rewrite' => array( 'slug' => 'classified', 'with_front' => true )

广泛的永久链接的附加参考在此处重写:http://shibashake.com/wordpress-theme/wordpress-permalink-add