与2个自定义帖子类型的关系

时间:2014-07-16 作者:burak

我想了解与自定义帖子类型的关系。

我使用此代码注册帖子类型

add_action(\'init\', function(){

$args = array(
  \'public\'             => true,
  \'query_var\'          => true,
  \'rewrite\'            => array( \'slug\' => \'/\' ),
  \'supports\'           => array( \'title\', \'excerpt\'),
  \'query_var\'          => true,
  \'label\'              => \'Series\'
);
register_post_type(\'series\', $args);

$args = array(
  \'public\'             => true,
  \'query_var\'          => true,
  \'rewrite\'            => array( \'slug\' => \'%series%\', \'with_front\' => false ),
  \'supports\'           => array( \'title\', \'excerpt\'),
  \'query_var\'          => true,
  \'label\'              => \'Episode\'
);

register_post_type(\'episodes\', $args);

});
我有一个名为《权力的游戏》的意甲联赛,就是这样

http://wordpress.dev:8888/game-of-thrones

我还有一集叫做“测试”,我想这样联系

http://wordpress.dev:8888/game-of-thrones/test

我该怎么做?谢谢你,很抱歉我的英语不好:)

2 个回复
SO网友:HU ist Sebastian

我没有亲自使用此插件,但根据描述判断,此插件应该可以解决您的问题:

https://wordpress.org/plugins/posts-to-posts/

快乐的编码,

Kuchenundkakao

SO网友:burak

我用这个密码解决了问题;

add_filter(\'post_type_link\', function($link, $post){
    if ($post->post_type != \'episode\')
        return $link;
    if ($cats = get_post_meta($post->ID, \'serie_slug\', true))
        $link = str_replace(\'%serie%\', $cats, $link);
    return $link;
}, 10, 2);

add_action(\'init\', function(){

$args = array(
  .
  .
  \'rewrite\'            => array( \'slug\' => \'series\' ),
  .
  .
);
register_post_type(\'series\', $args);

$args = array(
  .
  .
  \'rewrite\'            => array( \'slug\' => \'series/%series%\', \'with_front\' 
  .
  .
);

register_post_type(\'episodes\', $args);

flush_rewrite_rules();

});
您必须添加serie_slug (必须与剧集的后期元数据同名)。您可以手动或使用元数据库来执行此操作。

结束

相关推荐

Reslug a Custom Post Type

我为wordpress构建了一个带有自定义帖子类型的插件,在此过程中,我意识到我必须重新构建生成slug的方式。最初,我让cpt制作默认的slug,如new-post-1、new-post-2等。我意识到这很愚蠢,于是重新编写了命名约定,按照应该的方式从帖子标题创建slug。我现在唯一的问题是,我想让我在wordpress中输入的所有旧帖子都使用新的命名约定。是否有一个函数或方法可以告诉wordpress为特定的自定义帖子类型重建/重新生成slug。我找到了这个插件:http://wordpress.or