it-swarm.cn

为Genesis主题框架的自定义帖子类型使用自定义模板?

主持人注:原始标题是“如何在Genesis主题框架中为自定义帖子类型创建和使用自定义模板?”)

我正在使用Genesis主题框架,几乎完全是'股票'儿童主题。我安装了 WP Easy Post Types plugin,并创建了一个自定义帖子类型(“Members”)。我创建了两个用于“成员”帖子类型(电话号码和地址)的自定义字段。我试图弄清楚如何在两个地方显示这些字段的信息:example.com/membersexample.com/members/bob。 Genesis不支持典型的single-posttype.php文件来为自定义帖子类型创建模板,但即使这样做,也不会处理example.com/members。有关如何显示所需信息的任何建议?

2
Travis Northcutt

事实证明我错了,Genesis支持使用page_posttype.php方法创建自定义模板。事实证明这很简单。这是我的page_members.php文件(位于子主题文件夹中)的内容:

<?php
/*
Template Name: Members
*/

remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'custom_loop');
function custom_loop() {

    global $paged;
    $args = array('post_type' => 'members');

    genesis_custom_loop( $args );

}

genesis();
1
Travis Northcutt

有人可以澄清这个过程的下一步吗?我在Genesis子主题中有类似的自定义帖子类型,需要更改多帖子分类页面上的循环以及单个自定义帖子页面。在这种情况下,循环的自定义代码在哪里?谢谢!

0
Adam

这个模板需要进入子主题文件夹,而不是Genesis。

编辑:

您需要手动创建single-$ posttype.php并将其添加到子主题中,如上所述。请看一下 WordPress模板层次结构 。不用说,您添加到子主题的任何内容都将覆盖父主题文件。

0
Marna

看看Matt Wiebe如何在他的“更智能的自定义帖子类型”插件中做到这一点:

http://somadesign.ca/projects/smarter-custom-post-types/

相关功能在这里:

function my_custom_template_include( $template ) {
    if ( get_query_var('post_type') == 'members' ) {

        if ( is_single() ) {
            if ( $single = locate_template( array( 'members/single.php') ) )
                return $single;
        }
        else { // loop
            return locate_template( array(
                'members/index.php',
                'members.php', 
                'index.php' 
            ));
        }

    }
    return $template;
}

add_filter( 'template_include', 'my_custom_template_include' );
0
John P Bloch