好的,我想再次检查的第一件事是,不需要对父PHP进行任何修改,只需在子目录中创建一个名称重复的PHP,它会完全覆盖父文件?
不可以。您不能创建同名的主题。您可以使用您选择的任何名称创建主题,并在style.css
文件指向父级。
/*
Theme Name: Twenty Fifteen Child
Theme URI: http://example.com/twenty-fifteen-child/
Description: Twenty Fifteen Child Theme
Author: John Doe
Author URI: http://example.com
Template: twentyfifteen
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-fifteen-child
*/
“模板”行是指向父级的行:
模板行与父主题的目录名相对应。我们示例中的父主题是215主题,因此模板将是215。您可能正在使用不同的主题,因此请进行相应的调整
https://codex.wordpress.org/Child_Themes#How_to_Create_a_Child_Theme
下一个
主样式表保留在父样式表中,但活动样式表将来自子样式表,该子样式表通常在子CSS的标题处导入父样式表。
对WordPress Core将读取基本主题数据的子样式表,但仍需要排队。父样式表将不会。这似乎是很常见的@import
家长,如果我没记错的话,抄本上曾建议采用这种方法。CSS@import
但这并不是加载样式表的有效方法。它在页面加载中引入了延迟,因为两个样式表无法同步加载。更好的方法是现在出现在Codex中的使用Coreenqueue
功能:
function theme_enqueue_styles() {
$parent_style = \'parent-style\';
wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
wp_enqueue_style( \'child-style\',
get_stylesheet_directory_uri() . \'/style.css\',
array( $parent_style )
);
}
add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\' );
无论如何,返回到子主题。。。我不清楚的主要问题是,我们应该离开父函数。php in tact。但是,父功能。php通常定义一整批包含/需要文件,这些文件引用父目录中的文件。
这是正确的,这就是为什么您不处理该文件(以及其他内容)。
你需要记住在你的孩子的功能中超越这些吗。每次创建一个子项时使用php。php?
您只需要重写需要重写的文件和代码。其余部分根据父主题代码继续正常工作。这就是父/子关系的要点,也是该结构如此强大和灵活的原因。您可以利用一个主题的代码库来大大减少创建另一个主题所需的工作量。
子功能。php在父函数之前运行。php,所以重写应该可以工作。
在这里你必须小心。只能重写要重写的代码。在大多数情况下,这意味着通过get_template_part()
以及子主题敏感的相关函数和封装在if(!function_exists)\'...\'))
条件。代码包括通过PHP的require
和include
(或*_once
版本)无法重写。类似地,对于函数,您只能重写包装在if(!function_exists(\'...\'))
as you see used in the Core pluggable.php
file. 如果您试图通过提供自己的同名函数来覆盖任何其他函数,您将得到一个致命的PHP错误。PHP不允许多个同名函数。
你可能对this answer 也