Genesis主题框架下的自定义模板与普通WordPress主题的自定义模板并没有很大区别,首先要创建一个模板文件,例如page-news.php,该模板将只读取post type是news的文章。模板开头的声明也是一样的:

<?php /*
Template Name: News Template
*/ ?>

此时,进入编辑页面界面就可以选择名为News Template的模板了

如果没有Genesis框架,那我们就要拷贝html和php代码了,一堆堆的结构会不会让你头晕。Genesis的工作模式更像functions.php,几乎所有东西都是靠hooks输出的。通过钩子函数和自定义函数就可以轻松修改模板。

输出类型是news的新闻,要借助genesis_loop钩子修改主循环的数据,genesis_loop定义在lib/structure/loops.php中,用来输出主循环。为了修改主循环,首先移除genesis_loop默认加载的genesis_do_loop函数,换成我们自己的输出函数,看代码

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

function custom_loop() {
    global $paged;
    $args = array('post_type' => 'news');

    genesis_custom_loop($args);
}

数据已经更改了,接下来输出模板其他部分

<?php genesis(); ?>

整个模板文件的代码是这样的

<?php /*
Template Name: News Template
*/
 
remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'custom_loop');

function custom_loop() { 
    global $paged;
    $args = array('post_type' => 'news');
 
    genesis_custom_loop( $args ); 
}
 
genesis();
 
?>

如此简单清晰的结构是不是没那么令人头痛了