其实我正在使用Wordpress构建网站,一切正常,但现在我需要在functions.php中添加一些更改,这是父文件夹中的原始文件,所以我该怎么办?是否可以复制functions.php子主题中的所有内容,然后添加更改?
由于将来的主题更新,我不想在父文件夹中添加更改。但请告诉我这是否是唯一的选择。
编辑:“不要将父主题的functions.php的完整内容复制到子主题中的functions.php中。”是Wordpress Codex https://codex.wordpress.org/Child_Themes
的建议编辑2:[求助]观看以下答案。
答案 0 :(得分:1)
子主题是一个主题,它继承了另一个主题的功能和样式,称为父主题。子主题是修改现有主题的推荐方式。
如何创建子主题
样式表必须以下面的内容(样式表标题)开头:
/*
Theme Name: XYZ Child Theme
Theme URI: http://example.com/themes/spacious/
Description: XYZ Child theme
Author: ABC
Author URI: http://example.com
Template: XYZ
Version: 1.0
*/
/* =Theme customization starts here
------------------------------------------------------- */
需要注意几点:
最后一步是将functions.php中的父主题样式列表排入队列,如下所示:
add_action( 'wp_enqueue_scripts', 'enqueue_parent_styles' );
function enqueue_parent_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}
最后,要激活子主题,请在仪表板中转到Appearance-> Themes。查找您创建的子主题并将其激活。而已。此外,请确保父主题也存在于已安装的主题中,以使子主题起作用。如果您现在访问您的网站,它应该看起来就像激活父主题时一样。
现在,您可以毫无问题地对您的子主题进行更改!
如果要修改父主题函数,则可以将其简单地包含在条件标记中,以检查是否已运行该名称的函数:
<?php
if ( ! function_exists ( 'my_function' ) ) {
function my_function() {
// Contents of your function here.
}
}
?>
因此,如果您将父主题中的函数包含在这样的条件标记中,WordPress将检查您的子主题中是否存在已经运行过的具有相同名称的函数,如果这样,&#39 ;它不会从父主题运行该函数。
然后,当您在子主题中编写一个要覆盖父主题中的函数的函数时,您只需为其命名与父主题中的函数相同:
<?php
function my_function() {
// Contents for your function override here.
}
?>
WordPress将首先在子主题中运行该函数,当涉及到父主题中的函数时,它将检查它是否已经存在,并且因为它确实存在,它将不会运行它。
如果您不想触及parent functions.php ,那么您可以:
将子主题功能指定为更高优先级:
add_action( 'init', 'child_function', 15 );
从钩子中删除父主题函数:
remove_action( 'init', 'parent_function' );