2 回答
TA贡献1877条经验 获得超6个赞
如果在父functions.php主题中声明了一个函数,那么在子主题中声明一个同名的函数会导致子主题本身出现致命错误。我建议做这样的事情:
父函数.php
// This can become a filter if you'll need to manipulate the current user
function gt3_get_current_user() {
return get_user_by( 'id', get_current_user_id() );
}
add_filter( 'gt3/current_user_avatar', function( string $html = '', bool $show_email = false ) {
$html .= '<i class="gt3_login_icon gt3_login_icon--avatar"><i class="fa fa-user"></i></i>';
if( $show_email ) {
$html .= sprintf( '<span class="gt3_login__user_email">%s</span>', esc_html( gt3_get_current_user()->user_email ) );
}
return $html;
}, 10, 2 );
子主题的函数 .php
add_filter( 'gt3/current_user_avatar', function( string $html = '', bool $show_email = false ) {
// $html here is the one that returned from the parent's theme. You can manipulate it or replace the whole output inside here.
return $html;
}, 10, 2 );
示例用法:
echo apply_filters( 'gt3/current_user_avatar', '', false ); // This will echo the icon without the email
echo apply_filters( 'gt3/current_user_avatar', '', true ); // This will echo the icon with the email
echo apply_filters( 'gt3/current_user_avatar', '<p>Append</p>', false ); // This will echo the icon without the email and the '<p>Append</p>' html string before everything else
结果会因您使用此过滤器的位置而异。如果您在子主题中并且更改了添加所述过滤器的 html,则将为该主题自定义结果。请记住,您可以使用该use语句在闭包中引入外部变量。例如:
$user_name = 'Mike';
add_filter( 'gt3/current_user_avatar', function( string $html = '', bool $show_email = false ) use ( $user_name ) {
$html .= sprintf( '<p>Hello, %s!</p>', $user_name );
return $html;
}, 10, 2 );
// This will cheer the user, and it will be place at the end of the snippet.
TA贡献1887条经验 获得超5个赞
在同一文件夹中添加新的functions.php 文件不会覆盖您的代码,但不要复制/粘贴父主题文件中的代码,因为它需要与您对子主题所做的任何修改保持分离。相反,创建一个空白文件或添加您的子主题所需的任何新 .php 函数
- 2 回答
- 0 关注
- 153 浏览
添加回答
举报