2017-06-20 129 views
0

其实我建立一个网站使用WordPress的,一切工作,但现在我需要在functions.php,原始的一个在父文件夹中添加一些变化,所以我应该怎么做?是否有可能复制functions.php子主题内的所有内容,然后添加更改?WordPress的functions.php儿童主题

由于未来的主题更新,我不想在父文件夹中添加更改。但请告诉我这是否是唯一的选择。

编辑:“不要将父主题的functions.php的完整内容复制到子主题的functions.php中。”是来自WordPress的建议Codex https://codex.wordpress.org/Child_Themes

编辑2:[已解决]请看下面的答案。

回答

1

A 儿童主题是一个主题,它继承了另一个主题(称为父主题)的功能和样式。儿童主题是推荐修改现有主题的方式。

如何创建一个子主题

  1. 创建儿童主题目录(至名儿童主题作为父主题加上柴尔德常用的方法加在末尾。)
  2. 创建style.css
  3. 创建functions.php

样式表必须与以下(样式表头)开始:

/* 
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->主题。寻找你创建的孩子主题并激活它。而已。另外,确保父主题也存在于已安装的主题中,以使子主题正常工作。如果你现在访问你的网站,它应该看起来都一样,就像当父主题被激活时一样。

现在,您可以在没有任何问题的情况下对您的孩子主题进行更改!

如果你想修改父主题的功能,那么你可以简单地将其括在有条件的标签,以检查是否存在该名称已经运行的函数:

<?php 
if (! function_exists ('my_function')) { 
    function my_function() { 
     // Contents of your function here. 
    } 
} 
?> 

所以,如果你包围功能您在这样的条件标签中的父主题,WordPress会检查你的子主题中是否有一个与已经运行的名字相同的函数,如果是这种情况,它将不会从父主题运行函数。

然后,当你来写你的子主题要覆盖一个父主题的功能,你只要给它相同的名称作为一个父主题:

<?php 
function my_function() { 
    // Contents for your function override here. 
} 
?> 

WordPress会首先在子主题中运行该函数,当涉及到父主题中的函数时,它将检查它是否已经存在,并且因为它确实存在,它将不会运行它。

如果你不希望碰父母的functions.php那么你可以:

  1. 分配子主题功能更高的优先级:

    add_action('init', 'child_function', 15); 
    
  2. 删除父主题从钩子函数:

    remove_action('init', 'parent_function'); 
    
+0

您是上帝谢谢你对此详细回答! (我upvoted你的答案) – Nayzen

+0

谢谢!仅供参考,我不是上帝。我只是一个像你一样的人,差别只是经验。我已经做了几年这些事情,现在你正在做。所以,不要担心并继续挣扎。有一天,你会在这个阶段或者甚至比这更好! :) –

+0

你是对的!你有一个良好的精神,再次感谢你惊人的答案,我希望能够在今后帮助别人,就像你今天为我做的:)顺便说一句,我陷入了其他问题,包括做同样的,但与.css文件,我已经在这里打开了一张票https://stackoverflow.com/questions/44627617/wordpress-stylesheet-child-theme – Nayzen