WordPress 子主题 include_once

WordPress Child Themes include_once

我正在尝试创建一个子主题来覆盖我父主题中的一些功能

我在父 functions.php 主题中有这个

 include_once('admin/functions-extended/fn-typography.php'); //User Typography

这是我的尝试:

  include_once(get_stylesheet_directory().'admin/functions-extended/fn-typography.php' );

但不起作用

更多详情

我正在尝试在此文件中添加自定义字体,但在子主题中 父级 fn-typography.php 中的代码是

function mgm_get_google_fonts() {
// Google Font Defaults
$google_faces = array(
    "Abel" => "Abel",
    "Abril Fatface" => "Abril Fatface",
    "Aclonica" => "Aclonica",
    "Acme" => "Acme",
    "Actor" => "Actor",
    "Adamina" => "Adamina",
    "Advent Pro" => "Advent Pro",
    "Aguafina Script" => "Aguafina Script",
    "Aladin" => "Aladin",
    "Aldrich" => "Aldrich",
    "Alegreya" => "Alegreya",
    "Alegreya SC" => "Alegreya SC",
    "Alex Brush" => "Alex Brush",
    "Alfa Slab One" => "Alfa Slab One",
    "Alice" => "Alice",
    "Alike" => "Alike",
    "Alike Angular" => "Alike Angular",
    "Allan" => "Allan",
            );
return $google_faces;
   }

我想删除此字体并添加其他字体

您的父主题发生的任何事情 functions.php 也将由您的子主题完成,因此您不必单独包含该文件,因为它会在激活您的子主题时包含。

如果你想改变你的主题包含的文件中的行为,你不能通过 get_template_part 覆盖(比如库 PHP 文件),那么你应该寻找一种技术主题生成器已为您实施(如果有)。主要是靠钩子。

在您显示的代码中,mgm_get_google_fonts() 实际上并未加载字体,但显然提供了一个字体列表供其他函数加载。

父函数中的注释将其描述为提供默认值,因此暗示有一些方法可以覆盖它们。通过查看父级 functions.php,您可能会弄清楚如何做到这一点。

例如,如果父主题允许您重写此功能,它可能会这样说:

if ( !function_exists( 'mgm_get_google_fonts') {
    ...the function definition you have above...
}

这会测试您是否在子主题中定义了同名函数,如果有则使用您的函数。

如果父主题不这样做,您将需要查看调用 mgm_get_google_fonts 的位置并找出如何覆盖。