自定义Child中的Parentsfunctions.php文件

我现在正在自定义我的主题。标准是,登录的用户头像显示在菜单栏中,但我想在那里显示一个简单的图标。我已经编写了代码,一切正常,但代码位于 mains functions.php 文件中。因此,为了使站点可升级,我需要将代码嵌入到子主题 function.php 中。我在那里找不到任何帮助,所以也许这里有人可以帮助我!


非常感谢朱利安


下面是我需要嵌入到我的子主题的functions.php文件中的代码:


add_action( 'init', 'gt3_get_page_id_from_menu' );


function gt3_user_avatar_out($avatar_size=80,$show_email=false){

    $user_id = get_current_user_id();

    $current_user = get_user_by( 'id', $user_id );

    echo "<i class='gt3_login_icon gt3_login_icon--avatar'>";

        echo '<i class="fa fa-user"></i>';

    echo "</i>";

    if ($show_email) {

        echo "<span class='gt3_login__user_email'>".esc_html( $current_user->user_email )."</span>";

    }

}


波斯汪
浏览 154回答 2
2回答

慕哥9229398

如果在父functions.php主题中声明了一个函数,那么在子主题中声明一个同名的函数会导致子主题本身出现致命错误。我建议做这样的事情:父函数.php// This can become a filter if you'll need to manipulate the current userfunction gt3_get_current_user() {&nbsp; &nbsp; return get_user_by( 'id', get_current_user_id() );}add_filter( 'gt3/current_user_avatar', function( string $html = '', bool $show_email = false ) {&nbsp; &nbsp; $html .= '<i class="gt3_login_icon gt3_login_icon--avatar"><i class="fa fa-user"></i></i>';&nbsp; &nbsp; if( $show_email ) {&nbsp; &nbsp; &nbsp; &nbsp; $html .= sprintf( '<span class="gt3_login__user_email">%s</span>', esc_html( gt3_get_current_user()->user_email ) );&nbsp; &nbsp; }&nbsp; &nbsp; return $html;}, 10, 2 );子主题的函数 .phpadd_filter( 'gt3/current_user_avatar', function( string $html = '', bool $show_email = false ) {&nbsp; &nbsp; // $html here is the one that returned from the parent's theme. You can manipulate it or replace the whole output inside here.&nbsp;&nbsp; &nbsp; return $html;}, 10, 2 );示例用法:echo apply_filters( 'gt3/current_user_avatar', '', false ); // This will echo the icon without the emailecho apply_filters( 'gt3/current_user_avatar', '', true ); // This will echo the icon with the emailecho 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 ) {&nbsp; &nbsp; $html .= sprintf( '<p>Hello, %s!</p>', $user_name );&nbsp;&nbsp; &nbsp; return $html;}, 10, 2 );// This will cheer the user, and it will be place at the end of the snippet.

慕工程0101907

在同一文件夹中添加新的functions.php 文件不会覆盖您的代码,但不要复制/粘贴父主题文件中的代码,因为它需要与您对子主题所做的任何修改保持分离。相反,创建一个空白文件或添加您的子主题所需的任何新 .php 函数
打开App,查看更多内容
随时随地看视频慕课网APP