鉴于您已经引用了3位Genesis开发人员,我想用2段Genesis代码片段以及2个WordPress动作挂钩和过滤器示例来回答这个问题。
Hooks
Genesis中的不同模板文件包括挂钩,它使您能够在模板的那个位置执行PHP代码。
这里有一个visual guide 显示了《创世纪》中的所有钩子。
如果您查看genesis>lib>framework。php文件,您将找到所有在循环加载时加载的特定于主题的操作挂钩。
do_action( \'genesis_after_loop\' );
上面的钩子在名为loop\\u end的WordPress钩子之后执行。你可以使用Genesis中WordPress中包含的任何钩子,以及所有Genesis主题特定的钩子。
下面是一个非常基本的示例,说明如何在子主题中使用WordPress和Genesis动作挂钩,在主题中的特定位置添加内容。
add_action( \'genesis_after_loop\', \'add_text_after_loop\' );
function add_text_after_loop() {
echo \'Hello World - Genesis After Loop Hook\';
}
这里有一个非常类似的WordPress挂钩,你可以在Genesis或任何其他主题中使用它来显示循环后的内容。
add_action( \'loop_end\', \'add_text_after_loop_end\' );
function add_text_after_loop_end() {
echo \'Hello World - WordPress Loop End Hook\';
}
要测试这些挂钩,可以将这两个代码段添加到子主题函数文件中,以查看文本“Hello World”的确切显示位置。然后,您可以使用可视挂钩向导将挂钩更改为任何其他挂钩,以确定要输出文本的位置。
从上面可以看到,在同一位置的两个挂钩的注释表单之后都会显示Hello World文本。
Filters
Genesis中的不同文件包括过滤器,可用于修改父主题函数的默认输出。
Genesis中过滤器的代码如下所示:
$post_info = apply_filters( \'genesis_post_info\', \'[post_date] \' . __( \'by\', \'genesis\' ) . \' [post_author_posts_link] [post_comments] [post_edit]\' );
以上代码行可以在genesis>lib>structure>post中找到。php文件。
这是包含名为genesis\\u post\\u info的过滤器的代码,您可以在子主题函数文件中使用该过滤器来修改作者、日期、评论等的帖子信息:
add_filter( \'genesis_post_info\', \'sp_post_info_filter\' );
function sp_post_info_filter($post_info) {
$post_info = \'[post_date] by [post_author_posts_link] [post_edit]\';
return $post_info;
}
在上面的示例中,我删除了注释链接的快捷码,因此只有日期、作者和编辑链接将返回并显示在条目标题之后。
这是一个经典示例,说明了如何使用过滤器通过子主题更改原始函数,而无需编辑父主题中的默认函数代码。
此过滤器仅适用于Genesis,在WordPress中不可用。
下面是一个自定义函数的示例,它可以与Genesis和任何其他主题一起使用,因为它包含在核心WordPress文件中,因此可以在任何主题中使用。
add_filter( \'excerpt_length\', \'sp_excerpt_length\' );
function sp_excerpt_length( $length ) {
return 50; // pull first 50 words
}
上面的代码允许您修改任何主题中帖子摘录的长度。
来源http://my.studiopress.com/snippets/