Wordpress 单帖子类型模板不显示帖子

Posted

技术标签:

【中文标题】Wordpress 单帖子类型模板不显示帖子【英文标题】:Wordpress single-post-type template not displaying post 【发布时间】:2013-05-06 16:54:15 【问题描述】:

我有一个包含两种自定义帖子类型、布道和成员的主题。我还将永久链接设置为 postname。

一开始,single.php 会捕捉一般的博客文章,以及成员,但不会捕捉布道……它只会显示 index.php 文件。

经过一些研究,我发现重置(保存)永久链接会重置它们。这种工作现在捕获成员自定义帖子,但仅显示 index.php 用于布道。

我就是这样称呼他们的……

// Custom Post types for Sermons
add_action('init', 'sermons');

function sermons() 
  $args = array(
    'labels' => array(
       'name' => __( 'Sermons' ),
       'singular_name' => __( 'Sermons' ),
       'add_new' => __( 'Add Sermon' ),
       'add_new_item' => __( 'Add Sermon' ),
       'edit_item' => __( 'Edit Sermon' ),
       'new_item' => __( 'Add Sermon' ),
       'view_item' => __( 'View Sermon' ),
       'search_items' => __( 'Search Sermons' ),
       'not_found' => __( 'No Home Sermons found' ),
       'not_found_in_trash' => __( 'No Sermons found in trash' )
   ),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    // 'menu_icon' => WP_CONTENT_URL . '/themes/####/images/home-widget.png',
    'rewrite' => true,
    'exclude_from_search' => true,
    'menu_position' => 20,
    'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
    'has_archive' => true
  );

  register_post_type('sermons',$args);


// Custom Post types for Members
add_action('init', 'members');

function members() 
  $args = array(
    'labels' => array(
       'name' => __( 'Members' ),
       'singular_name' => __( 'Members' ),
       'add_new' => __( 'Add Member' ),
       'add_new_item' => __( 'Add Member' ),
       'edit_item' => __( 'Edit Member' ),
       'new_item' => __( 'Add Member' ),
       'view_item' => __( 'View Member' ),
       'search_items' => __( 'Search Members' ),
       'not_found' => __( 'No Home Members found' ),
       'not_found_in_trash' => __( 'No Members found in trash' )
   ),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    // 'menu_icon' => WP_CONTENT_URL . '/themes/####/images/home-widget.png',
    'rewrite' => true,
    'exclude_from_search' => true,
    'menu_position' => 20,
    'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
    'has_archive' => true
  );

  register_post_type('members',$args);

我试过single-sermons.php 和single-members.php,似乎都不管用。是我注册每种自定义帖子类型的方式破坏了这一点吗?

**** 编辑 **** 从 $args 中删除了 'rewrite' => true,一切都很好,但我更希望有 SEO 友好的网址。

**** 编辑 **** 修复它...显然,删除 args 中的 'rewrite' => true,刷新永久链接,然后再次添加 'rewrite' => true,就成功了。

【问题讨论】:

只是想知道将 'publicly_queryable' => true 设置为参数是否有帮助。 codex.wordpress.org/Function_Reference/… 。如果设置 single-sermons.php 和 single-members.php 模板怎么样? 是的,试过了。由于某种原因它不会渲染。我会尝试你的建议。非常感谢 【参考方案1】:

您应该在创建自定义帖子类型后执行flush_rewrite_rules(),这将为您刷新永久链接结构。

只需在 register_post_type() 函数后添加 flush_rewrite_rules()

更多信息:http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

【讨论】:

它起作用了,按照它应该做的。但它也让我回到了原来的问题。 我怀疑您遇到的问题出在上面的代码中,我没有发现任何异常【参考方案2】:

修复它...显然,删除参数中的'rewrite' => true,刷新永久链接,然后再次添加'rewrite' => true,就可以了。

【讨论】:

【参考方案3】:

重新保存永久链接对我有用。 (设置 -> 永久链接 -> 保存)。

【讨论】:

我在问题中提到保存永久链接并不能完全解决问题。玛丽路易斯帕克密码?? 我知道,但删除 'rewrite' => true 对我不起作用,因此永久链接修复可能适用于具有相同情况的其他人。干杯【参考方案4】:

设置publicly_queryable => true 解决了我的问题。

【讨论】:

以上是关于Wordpress 单帖子类型模板不显示帖子的主要内容,如果未能解决你的问题,请参考以下文章

在 wordpress 的自定义页面模板中显示帖子分类信息

停止显示自定义帖子类型的 wordpress 搜索

在 Wordpress 中显示存档帖子

如何在页面模板中将ACF关系帖子显示为循环

在 WordPress 管理列帖子/产品自定义帖子类型中显示 Slug

Wordpress 按帖子类型订购帖子