自定义帖子类型wordpress的大问题

时间:2015-04-10 13:36:35

标签: php wordpress

基本上我在functions.php中声明了一个自定义的帖子类型:

register_post_type("butik", [
    "labels" => [
        "name" => "Butik",
        "singular_name" => "Butik"
    ],
    "show_ui" => true,
    "supports" => [
        "title",
        "editor",
        "thumbnail"
    ]
]);

我在自定义列表页面上正确呈现了所有帖子,但是我希望它们在单击时显示在single.php模板上。我已经谷歌搜索了几年,到处读书,我应该为我的案例创建一个单butik.php,并能够在那里列出每个适当的帖子,但它不起作用。它只是将我引导到index.php模板,所以我尝试将它们列在那里,没有成功,尝试在那里打印帖子,没有成功......

我做错了什么?!...

自定义帖子的永久链接的一个示例是: http://localhost:8080/caroli/butik/caroli-blommor/

任何提示或解决方案?

3 个答案:

答案 0 :(得分:2)

尝试添加' public' =>是的,并且: '重写' =>数组(' slug' =>' butik')键

register_post_type("butik", [
    "labels" => [
        "name" => "Butik",
        "singular_name" => "Butik"
    ],
    "show_ui" => true,
    'public' => true,
    'rewrite' => [
        'slug' => 'butik'
    ],
    "supports" => [
        "title",
        "editor",
        "thumbnail"
    ]
]);

之后转到设置 - >永久链接设置,只需点击"更新按钮"。

答案 1 :(得分:0)

此问题通常是由于需要更新重写规则。 WordPress并不总是自动完成这项工作。请尝试以下步骤(按此顺序):

  1. 转到设置>永久链接并将结构更改为" Custom Structure"。 (它应默认为" http://yourdomain.com/%postname%/)。确保单击"保存更改"。检查并查看您的自定义帖子类型现在是否使用single-butik.php模板。如果不是,那么:

  2. 打开你的functions.php并添加以下代码:

    function theme_prefix_rewrite_flush() {
       flush_rewrite_rules();
    }
    add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );
    
  3. 保存您的functions.php,并在WordPress管理员中将您的主题切换为2014(或任何其他默认主题)并激活它。现在将主题切换回原来的样子。这将强制刷新重写规则。

    您的自定义帖子类型应该使用正确的single-butik.php模板。

答案 2 :(得分:0)

如果您问我自定义帖子类型的最佳解决方案是acf plugin他将为您完成所有这些工作,只需先阅读文档然后您就可以随意做模板。

我希望这会对你有所帮助:)。