Php WordPress修改父代码

Php WordPress修改父代码,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,有人告诉我,子主题是一个不错的选择,但是你应该尽量不要接触父模板文件,并通过操作/过滤器挂钩进行修改。然而,我经常发现我需要在没有现有钩子的地方插入或类似内容 有没有更好的方法来修改父代码?我发现最简单的方法就是复制我想要修改的文件,比如header.php,然后进行所需的更改。当然,如果父主题被更新,my header.php将过时,找到更改将是一件痛苦的事情 有更好的方法使用子主题,而不需要从父主题复制文件并对其进行黑客攻击 主题框架 你以前可能遇到过主题框架,比如论文、卡灵顿或主题 一个主

有人告诉我,子主题是一个不错的选择,但是你应该尽量不要接触父模板文件,并通过操作/过滤器挂钩进行修改。然而,我经常发现我需要在没有现有钩子的地方插入
或类似内容


有没有更好的方法来修改父代码?我发现最简单的方法就是复制我想要修改的文件,比如header.php,然后进行所需的更改。当然,如果父主题被更新,my header.php将过时,找到更改将是一件痛苦的事情

有更好的方法使用子主题,而不需要从父主题复制文件并对其进行黑客攻击

主题框架 你以前可能遇到过主题框架,比如论文、卡灵顿或主题

一个主题框架背后的理念是:它将为你的儿童主题发展提供一个灵活的基础:
  • 提供干净、坚实、结构良好的父主题
  • 为标记提供附加挂钩,以及
  • 在某些情况下,提供管理工具,允许您无需编码即可修改主题

函数重写 有了主题框架,使用
functions.php
很容易覆盖现有函数。这允许您用自己的自定义代码替换常见的功能,如页眉和页脚,还可以使用不在所选主题框架中的功能扩展主题

以下是主题框架的一些示例(我在最近的一个项目中使用了主题框架):


因此,您应该在子主题中修改
style.css
functions.php
。这样,即使Wordpress和底层父主题被更新,您的主题也能保持正常运行。

以下是我所做的。这不是最干净的解决方案,但它确实有效

下面的header.php文件实质上是将父主题的header.php作为字符串加载,插入代码,保存临时文件,然后将临时文件包含在其中以供执行

$whole_file = file_get_contents(__DIR__ . "/../parent/header.php"); // Load the header file and convert to string
$predecessor_line = '<body id="for-example">'; // We're inserting our code right after this line. As long as the parent theme doesn't update this line, we're good.
$split_file = explode($predecessor_line, $whole_file); // Slice the file at the $predecessor_line (The text used to slice disappears, so be sure to add it again)
$code_to_insert = '<div class="myclass">'; // This is the code you want to insert.
$new_file_content = $split_file[0] . $predecessor_line . $code_to_insert . $split_file[1]; // Piece everything together
$new_file = fopen("_temp_header.php", "w"); // Create a Temporary File
fwrite($new_file, $new_file_content); // Write The Temporary File
fclose($new_file); // Close the Temporary File
include("_temp_header.php"); // Include the Temporary File to execute
unlink("_temp_header.php"); // Delete the Temporary File
$whole\u file=file\u get\u contents(uu DIR\uu./../parent/header.php);//加载头文件并转换为字符串
$PRESSIONER_行=“”;//我们正在这行后面插入代码。只要父主题不更新这一行,我们就可以了。
$split_file=explode($preducer_line,$thill_file);//在$Preference_行对文件进行切片(用于切片的文本消失,因此请确保再次添加)
$code_to_insert=“”;//这是您要插入的代码。
$new_file_content=$split_file[0]$这条线的前身$代码\u至\u插入$拆分_文件[1];//拼凑
$new_file=fopen(“_temp_header.php”,“w”);//创建一个临时文件
fwrite($new_file,$new_file_content);//写入临时文件
fclose($new_文件);//关闭临时文件
包括(“_temp_header.php”);//包括要执行的临时文件
取消链接(“_temp_header.php”);//删除临时文件

不幸的是,我认为您已经在使用最佳/唯一选项。在这里您可能会更幸运:wordpress.stackexchange.com理论上,告诉PHP查找HTML元素(通过ID或其他方式)并在其中插入代码对我来说是有意义的。为什么看起来这个方法根本没有被使用?