Custom Post Type UI

时间:2012-04-20 作者:Noor

我正在使用插件自定义帖子类型ui创建一个帖子类型,上面写着电影。一切都很好。我制作了一部电影,可在

http://localhost/wordpress/movies/test/
然而,当我继续

http://localhost/wordpress/movies/

我本来希望在所有电影列表中都能将测试视为电影,但没有显示任何内容

插件生成的代码:

register_post_type(\'movies\', array(
    \'label\' => \'Movies\',
    \'description\' => \'\',
    \'public\' => true,
    \'show_ui\' => true,
    \'show_in_menu\' => true,
    \'capability_type\' => \'post\',
    \'hierarchical\' => false,
    \'rewrite\' => array(\'slug\' => \'\'),
    \'query_var\' => true,
    \'supports\' => array(
            \'title\',\'editor\',\'excerpt\',\'trackbacks\',
            \'custom-fields\',\'comments\',\'revisions\',\'thumbnail\',\'author\',
            \'page-attributes\',),
    \'taxonomies\' => array(\'category\',\'post_tag\',),
    \'labels\' => array (
          \'name\' => \'Movies\',
          \'singular_name\' => \'Movie\',
          \'menu_name\' => \'Movies\',
          \'add_new\' => \'Add Movie\',
          \'add_new_item\' => \'Add New Movie\',
          \'edit\' => \'Edit\',
          \'edit_item\' => \'Edit Movie\',
          \'new_item\' => \'New Movie\',
          \'view\' => \'View Movie\',
          \'view_item\' => \'View Movie\',
          \'search_items\' => \'Search Movies\',
          \'not_found\' => \'No Movies Found\',
          \'not_found_in_trash\' => \'No Movies Found in Trash\',
          \'parent\' => \'Parent Movie\',
),) );

3 个回复
最合适的回答,由SO网友:Bainternet 整理而成

只需添加has_archive => \'“电影”到传递给的参数数组register_post_type 您应该很好,因为默认情况下它设置为false。

SO网友:Jay

转到“管理”面板和“设置”选项卡下的“永久链接”选项卡,进入永久链接页面后,保存更改并重试。这是wordpress的一个隐藏技巧。访问永久链接页面并保存更改后,缓存将被清除。我想这应该对你有用。

SO网友:Tom J Nowell

我发现您的代码存在许多问题:

\'rewrite\' => array(\'slug\' => \'\'),
你不能喝一点\'\' 它不起作用。核心中没有黑客来修复这个问题,关于permalink冲突,有很好的理由。我只能假设您正在尝试使自定义帖子像页面一样工作,但它不会以这种方式工作。将其更改为其他内容或rewrite 等于true

\'label\' => \'Movies\',
您已经定义了标签数组,这是不必要的。

最后,类别存档默认情况下仅显示类型为的帖子post. 所以你的电影不会出现在那里。

要解决此问题,请将其放置在functions.php:

add_filter(\'pre_get_posts\', \'query_post_type\');
function query_post_type($query) {
  if(is_category() || is_tag()) {
    $post_type = get_query_var(\'post_type\');
    if($post_type)
        $post_type = $post_type;
    else
        $post_type = array(\'post\',\'movies\'); // replace cpt to your custom post type
    $query->set(\'post_type\',$post_type);
    return $query;
    }
}
将来,正确缩进代码(我必须在你的帖子中修复它,它是不可读的,不可读的代码通常也是坏代码),并且use a generator like this one for registering post types and taxonomies

结束

相关推荐