无论刷新规则如何,都不会加载单个-{post_type}.php

时间:2016-05-23 作者:noquierouser

我有以下代码来定义producto 自定义类型帖子:

add_action(\'init\', \'custom_post_producto\');
function custom_post_producto() {
  $args = array(
    "label"               => \'Productos\',
    "labels"              => $labels,
    "description"         => "Artículos a la venta dentro del sitio web.",
    "public"              => true,
    "publicly_queryable"  => false,
    "show_ui"             => true,
    "show_in_rest"        => false,
    "has_archive"         => false,
    "show_in_menu"        => true,
    "exclude_from_search" => true,
    "capability_type"     => "page",
    "map_meta_cap"        => true,
    "hierarchical"        => false,
    // "rewrite"          => array( "slug" => "producto", "with_front" => true ),
    "rewrite"             => true,
    "query_var"           => true,
    "menu_icon"           => "dashicons-products",        
    "supports"            => array( "title", "thumbnail" )
  );

  register_post_type("producto", $args);
  // flush_rewrite_rules();
}
而且,正如标题所提出的问题,single-{post_type}.php 未加载并重定向到站点索引。

现在,我已经花了几个小时试图找出这个问题。我试过刷新重写规则flush_rewrite_rules() 紧接着register_post_type(), 更改(甚至删除)rewrite 中的属性$args 阵列,重新保存永久链接设置,甚至安装Rewrite Rules Inspector plugin 检查是否一切正常,并一次又一次刷新重写规则,但都没有用。我甚至重新安装了整个网站并输入了新信息,但问题仍然存在。

为了记录在案,我正在localhost 在Windows 10上使用XAMPP 5.6.19,并使用Wordpress 4.5.2。

提前感谢您的帮助。

1 个回复
最合适的回答,由SO网友:Tim Malone 整理而成

刷新重写规则(只需访问设置->永久链接页面即可)是一个很好的步骤,因为这通常是这些问题被忽视的原因。

然而,正如米洛在评论中所说,在这种情况下publicly_queryable 如果希望这些帖子显示在前端,则参数必须为true。

docs for register_post_type():

public
(布尔)(可选)控制类型对作者可见的方式(show_in_nav_menus, show_ui) 和读者(exclude_from_search, publicly_queryable).<默认值:false

publicly_queryable
(布尔)(可选)是否可以在前端执行查询作为parse\\u request()的一部分<默认值:公共参数的值

正如你所看到的,正如米洛所说,只是避免设置publicly_queryable 在这种情况下会让事情变得更简单。

我肯定会建议你阅读这些文档,以了解每个属性的作用,但我意识到,一开始你很难理解!

关于评论中的第二个问题:

public 是否显示模板?和has_archiverewrite?

  • public 是一种快速覆盖,通常可以一次性控制帖子类型的所有后端和前端可见性:除非您使用上述四个更显式的选项中的任何一个来覆盖它。对于前端,这些是publicly_queryable, 正如我们已经解决的,以及exclude_from_search. 您已设置exclude_from_search 这是真的,所以无论你的目标是什么public, 在搜索(或分类术语列表)中找不到此帖子类型。

  • has_archive 不会影响是否可以查看您的单个帖子类型,但会打开和关闭查看所有帖子存档“循环”的选项-在http://example.com/your_rewrite_slug

  • rewrite 不会影响您帖子的公共可见性;URL将是什么。URL必须是某种东西,因此如果不设置重写值,它将默认为post\\u类型名称,在本例中为“producto”

文档中也涵盖了其中的每一项,因此我将再次提及-一定要仔细阅读。投资是值得的!:)

相关推荐