具有自定义发布类型(自定义表)的模板不起作用

时间:2013-05-11 作者:Xavier

我正在使用自定义帖子类型(CPT)my-project 存储在自定义表MY\\u项目中。

以下是CPT注册代码:

    $labels = array(
        \'name\' => __( \'Projects \' ),
        \'singular_name\' => __( \'Project\' ),
                    // other labels
    );

    $args = array(
        \'labels\' => $labels,
        \'description\' => __( \'Projects Management\' ),
        \'public\' => true,
        \'show_ui\' => true,
        \'show_in_nav_menus\' => true,
        \'show_in_admin_bar\' => true,
        \'menu_position\' => 100,
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'has_archive\' => true,
        \'supports\' => false,
        \'publicly_queryable\' => true,
        \'query_var\' => true,
        \'rewrite\' => array( \'slug\' => \'project\', \'with_front\' => false ),
    );

    register_post_type( \'my-project\', $args );
正如你所看到的,我没有使用Wordpress中的任何字段(\'supports\' => false,) 当我使用自己的字段并将其插入自定义表时;但我设定了post-namepost-title 在里面wp_posts 创建新CPT时的表my-project.

我想使用基本模板twentyeleven显示我的所有字段,我发现我必须在themes/twentyeleven/functions.php:

add_filter( \'pre_get_posts\', \'my_get_posts\' );
function my_get_posts( $query ) {
    if ( is_home() )
    $query->set( \'post_type\', array( \'my-project\' ) );
return $query;
}
=>第一个问题:是否有其他方法注册我的CPT以显示它/这是写这篇文章的最佳地方?

然后我在中创建了2个文件themes/twentyeleven/:

1.archive-my-project.php (应显示my-project)

2.single-my-project.php (应显示一个my-project)

=>第二个问题,使用管理中的“修改前预览”按钮将显示我的所有CPT列表my-project (仅标题)。它应该只有一个项目,wordpress应该使用single-my-project.php 文件是否正确?URL正常:http://localhost/wordpress/project/project1/. 单击其中一个标题将显示“未找到任何内容”页面。。。我试图编辑single-my-project.php 显示“测试”字符串的内容,但没有更改。。。

=>第三个问题:slug(我设置为project) 只在URL中使用,而不在其他地方使用,对吗?与文件名无关single-my-project.php (好的)/single-project.php (不正常)?

请注意,我读过Template_Hierarchy

谢谢你的帮助,

泽维尔

1 个回复
SO网友:s_ha_dum

问题#1:我不太理解这个问题,但你所做的看起来还不错。我可以添加pre_get_posts 在注册帖子类型的同一位置进行筛选(可能是插件文件),但在主题中注册应该可以。如果你这样做,它不会转移到另一个主题。

问题#2:注册新CPT时,必须刷新永久链接。关于这一点,这里有许多问题和答案。最近,我回答了这个问题:https://wordpress.stackexchange.com/a/99014/21376 故事的简短版本是“转到wp admin->Settings->Permalinks并单击save按钮”。

问题#3:文件名来自用于注册到post类型的名称(slug)——这里的第一个参数:register_post_type( \'my-project\', $args );. 据我所知,其他论点并不影响这一点。

结束

相关推荐

Multiple Page Templates & CSS

在使用多个页面模板的主题上处理CSS的最佳实践是什么?例如:我将有一个全宽页面模板和一个两列页面模板。最好只在单个CSS中调用容器(#fullWidthContainer vs.#twoColumnContainer)还是为每个页面模板提供单独的CSS文件更好?