如何强制自定义POST类型档案的URL使用页面模板?

时间:2013-05-22 作者:janoChen

我有以下自定义帖子类型:

if ( $args->has_archive ) {
    $archive_slug = $args->has_archive === true ? $args->rewrite[\'slug\'] : $args->has_archive;
    if ( $args->rewrite[\'with_front\'] )
        $archive_slug = substr( $wp_rewrite->front, 1 ) . $archive_slug;
    else
        $archive_slug = $wp_rewrite->root . $archive_slug;


register_post_type( \'jobs\',
        array(
            \'labels\' => array(
                \'name\' => __( \'Jobs\' ),
                \'singular_name\' => __( \'Job\' )
            ),
        \'public\' => true,
            \'show_ui\' => true,
        \'has_archive\' => $archive_slug,
            \'hierarchical\' => true,
            \'query_var\' => true,
            \'supports\' => array( \'title\', \'editor\', \'comments\', \'trackbacks\', \'revisions\',\'author\', \'excerpt\', \'custom-fields\', \'thumbnail\', \'page-attribute\' ),
        \'rewrite\' => array(\'slug\' => \'jobs\', \'with_front\' => true),
            \'taxonomies\' => array( \'post_tag\', \'category\'),
            \'can_export\' => true,
        \'show_in_nav_menus\' => true,
        //\'capability_type\'=>\'jobs\',
        //\'capabilities\' => array(
        //  \'read_post\' => \'read_jobs\'
        //),
        )
    );
现在,它正在使用模板archive-jobs.php (WordPress的默认模板系统)。现在,我要做的是使用一个名为jobs-page.php 对于urlmysite.com/jobs 但这是不可能的,因为WordPress会自动捕捉到/jobs 并将其重定向到存档模板。我试过这么做\'has_archive\' => false, 但是WordPress使用archive.php 对于mysite.com/jobs.

处理这个问题的最佳方式是什么?

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

可以为传递字符串has_archive. 该字符串将用作存档URL。

因此,在注册码中使用:

\'has_archive\' => \'jobs\'
register_post_type() WordPress核心声明:

if ( $args->has_archive ) {
    $archive_slug = $args->has_archive === true ? $args->rewrite[\'slug\'] : $args->has_archive;
    if ( $args->rewrite[\'with_front\'] )
        $archive_slug = substr( $wp_rewrite->front, 1 ) . $archive_slug;
    else
        $archive_slug = $wp_rewrite->root . $archive_slug;
正如你所见,has_archive 测试字符串。如果是字符串,则将使用该字符串。如果是的话TRUE 将使用段塞。字符串获胜。

SO网友:Jimmy James

这是一篇比较老的帖子,但也许这会对某人有所帮助。

在您的存档中我的cpt。可以使用的php文件get_page_by_path( \'my-page-slug\' ); 获取您要查找的页面对象并从那里开始。换言之,先加载默认模板,然后运行抓取您想要显示的页面的页面数据,并在自定义循环中输出该页面数据。

忘记了codex链接:http://codex.wordpress.org/Function_Reference/get_page_by_path

我希望这对某人有帮助。

结束

相关推荐

Multiple Page Templates & CSS

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

如何强制自定义POST类型档案的URL使用页面模板? - 小码农CODE - 行之有效找到问题解决它

如何强制自定义POST类型档案的URL使用页面模板?

时间:2013-05-22 作者:janoChen

我有以下自定义帖子类型:

if ( $args->has_archive ) {
    $archive_slug = $args->has_archive === true ? $args->rewrite[\'slug\'] : $args->has_archive;
    if ( $args->rewrite[\'with_front\'] )
        $archive_slug = substr( $wp_rewrite->front, 1 ) . $archive_slug;
    else
        $archive_slug = $wp_rewrite->root . $archive_slug;


register_post_type( \'jobs\',
        array(
            \'labels\' => array(
                \'name\' => __( \'Jobs\' ),
                \'singular_name\' => __( \'Job\' )
            ),
        \'public\' => true,
            \'show_ui\' => true,
        \'has_archive\' => $archive_slug,
            \'hierarchical\' => true,
            \'query_var\' => true,
            \'supports\' => array( \'title\', \'editor\', \'comments\', \'trackbacks\', \'revisions\',\'author\', \'excerpt\', \'custom-fields\', \'thumbnail\', \'page-attribute\' ),
        \'rewrite\' => array(\'slug\' => \'jobs\', \'with_front\' => true),
            \'taxonomies\' => array( \'post_tag\', \'category\'),
            \'can_export\' => true,
        \'show_in_nav_menus\' => true,
        //\'capability_type\'=>\'jobs\',
        //\'capabilities\' => array(
        //  \'read_post\' => \'read_jobs\'
        //),
        )
    );
现在,它正在使用模板archive-jobs.php (WordPress的默认模板系统)。现在,我要做的是使用一个名为jobs-page.php 对于urlmysite.com/jobs 但这是不可能的,因为WordPress会自动捕捉到/jobs 并将其重定向到存档模板。我试过这么做\'has_archive\' => false, 但是WordPress使用archive.php 对于mysite.com/jobs.

处理这个问题的最佳方式是什么?

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

可以为传递字符串has_archive. 该字符串将用作存档URL。

因此,在注册码中使用:

\'has_archive\' => \'jobs\'
register_post_type() WordPress核心声明:

if ( $args->has_archive ) {
    $archive_slug = $args->has_archive === true ? $args->rewrite[\'slug\'] : $args->has_archive;
    if ( $args->rewrite[\'with_front\'] )
        $archive_slug = substr( $wp_rewrite->front, 1 ) . $archive_slug;
    else
        $archive_slug = $wp_rewrite->root . $archive_slug;
正如你所见,has_archive 测试字符串。如果是字符串,则将使用该字符串。如果是的话TRUE 将使用段塞。字符串获胜。

SO网友:Jimmy James

这是一篇比较老的帖子,但也许这会对某人有所帮助。

在您的存档中我的cpt。可以使用的php文件get_page_by_path( \'my-page-slug\' ); 获取您要查找的页面对象并从那里开始。换言之,先加载默认模板,然后运行抓取您想要显示的页面的页面数据,并在自定义循环中输出该页面数据。

忘记了codex链接:http://codex.wordpress.org/Function_Reference/get_page_by_path

我希望这对某人有帮助。

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢