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

时间:2010-08-17 作者:Travis Northcutt

(Moderator\'s note: 最初的标题是“如何在Genesis主题框架中为自定义帖子类型创建和使用自定义模板?”)

我使用的是Genesis主题框架,几乎完全是“股票”子主题。我有WP Easy Post Types 已安装插件,并创建了一个自定义帖子类型(“成员”)。我创建了两个自定义字段,用于“成员”帖子类型(电话号码和地址)。我试图找出如何在两个地方显示这些字段中的信息:example.com/membersexample.com/members/bob. Genesis不支持典型的single-posttype.php 文件为自定义帖子类型创建模板,但即使创建了模板,也无法解决此问题example.com/members. 关于如何获取所需信息以进行显示,有何建议?

4 个回复
最合适的回答,由SO网友:Travis Northcutt 整理而成

原来我错了,Genesis支持使用page_posttype.php 创建自定义模板的方法。结果很简单。以下是我的页面成员的内容。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();

SO网友:John P Bloch

看看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\' );

SO网友:Marna

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

Edit:

您需要手动创建single-$posttype。php并将其添加到上面提到的子主题。请看一看WordPress Template Hierarchy. 不用说,添加到子主题的任何内容都将覆盖父主题文件。

SO网友:adam5280

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

相关推荐

Custom templates vs page-slug

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

为Genesis主题框架使用自定义帖子类型的自定义模板? - 小码农CODE - 行之有效找到问题解决它

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

时间:2010-08-17 作者:Travis Northcutt

(Moderator\'s note: 最初的标题是“如何在Genesis主题框架中为自定义帖子类型创建和使用自定义模板?”)

我使用的是Genesis主题框架,几乎完全是“股票”子主题。我有WP Easy Post Types 已安装插件,并创建了一个自定义帖子类型(“成员”)。我创建了两个自定义字段,用于“成员”帖子类型(电话号码和地址)。我试图找出如何在两个地方显示这些字段中的信息:example.com/membersexample.com/members/bob. Genesis不支持典型的single-posttype.php 文件为自定义帖子类型创建模板,但即使创建了模板,也无法解决此问题example.com/members. 关于如何获取所需信息以进行显示,有何建议?

4 个回复
最合适的回答,由SO网友:Travis Northcutt 整理而成

原来我错了,Genesis支持使用page_posttype.php 创建自定义模板的方法。结果很简单。以下是我的页面成员的内容。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();

SO网友:John P Bloch

看看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\' );

SO网友:Marna

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

Edit:

您需要手动创建single-$posttype。php并将其添加到上面提到的子主题。请看一看WordPress Template Hierarchy. 不用说,添加到子主题的任何内容都将覆盖父主题文件。

SO网友:adam5280

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

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?