Ced*_*Ced 3 php wordpress parent-child
实际上,我正在使用 Wordpress 构建一个网站,一切正常,但是现在我需要在functions.php 中添加一些更改,即父文件夹中的原始文件,那么我该怎么办?是否可以复制functions.php子主题中的所有内容,然后添加更改?
由于未来的主题更新,我不想在父文件夹中添加更改。但是告诉我这是否是唯一的选择。
编辑:“不要将父主题的functions.php 的全部内容复制到子主题的functions.php 中。” 是来自 Wordpress Codex 的建议 https://codex.wordpress.org/Child_Themes
编辑 2:[已解决] 观看下面的答案。
Atl*_*dal 10
一个儿童主题是继承了功能和造型的另一个主题,称为父主题的主题。子主题是修改现有主题的推荐方式。
如何创建子主题
样式表必须以以下内容开头(样式表标题):
/*
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
------------------------------------------------------- */
Run Code Online (Sandbox Code Playgroud)
需要注意的几点:
的最后一步是将里面排队这样的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' );
}
Run Code Online (Sandbox Code Playgroud)
最后,要激活子主题,请在仪表板中转到外观->主题。查找您创建的子主题并激活它。就是这样。此外,请确保父主题也存在于已安装的主题中,以便子主题正常工作。如果您现在访问您的站点,它应该看起来与激活父主题时一样。
现在,您可以毫无问题地更改您的子主题!
如果要修改父主题函数,则只需将其包含在条件标记中即可检查是否已运行该名称的函数:
<?php
if ( ! function_exists ( 'my_function' ) ) {
function my_function() {
// Contents of your function here.
}
}
?>
Run Code Online (Sandbox Code Playgroud)
因此,如果您将父主题中的函数包含在这样的条件标签中,WordPress 将检查您的子主题中是否存在已运行的同名函数,如果是这种情况,它将不会运行该函数从父主题。
然后,当您在子主题中编写要覆盖父主题中的函数的函数时,只需将其命名为与父主题中的函数相同的名称:
<?php
function my_function() {
// Contents for your function override here.
}
?>
Run Code Online (Sandbox Code Playgroud)
WordPress 将首先运行子主题中的函数,当涉及到父主题中的函数时,它会检查它是否已经存在,因为存在,它不会运行它。
如果你不想接触父functions.php,那么你可以:
为子主题功能分配更高的优先级:
add_action( 'init', 'child_function', 15 );
Run Code Online (Sandbox Code Playgroud)从钩子中删除父主题函数:
remove_action( 'init', 'parent_function' );
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
10664 次 |
最近记录: |