如何避免 Wordpress 主题升级更改我的父主题功能.php


How can I avoid Wordpress theme upgrades changing my parent themes functions.php?

我目前在wp-content/themes/genesis/header.php中手动实现了跟踪代码

代码如下所示(缩短):

<script>
  CODE HERE
<?php if (is_single()){CODE HERE}?>
  CODE HERE
</script>
</head>

每当我升级 genesis(Wordpress 主题)时,此代码都会丢失,我必须再次手动添加它。

如何通过functions.php将此代码添加到 wp-content/themes/genesis/header.php 的 head 部分,以便它在 Wordpress 主题升级中幸存下来 - 代码的外观如何?

您需要

使用wp_head钩子动态地向<head></head>添加内容。

您的代码如下所示:

add_action('wp_head', 'change_this_name');
function change_this_name(){
  ?>
  <script>
    CODE HERE
  <?php if (is_single()){CODE HERE}?>
    CODE HERE
  </script>
  <?php
};

通常,在不覆盖修改的情况下修改主题的解决方案是使用子主题。但是你也可以创建一个小插件,可以做你想在这里做的同样的事情。

目前,您采取哪种选择通常很重要,但是如果您计划将来进行更多更改,则应记住:

  • 插件用于添加功能
  • 主题用于控制事物的外观和感觉

这可能有助于您决定现在最好采用哪个选项(尽管您可以轻松地同时执行这两个选项,或者如果您愿意:)稍后更改)。

选项 1:创建子主题

wp-content/themes文件夹中创建一个新文件夹(随心所欲地命名为新主题),然后在该文件夹中创建一个style.css

style.css顶部,您需要包含主题的定义信息。您可以从 Genesis 主题中复制此格式,只需更改名称和其他详细信息,以便在激活它时清楚这是您的主题。

这里的关键是在此主题信息中添加一个新行:

Template: genesis

这行告诉Wordpress,你的主题

将是Genesis的子主题,任何你的主题没有提供的东西,Wordpress都会从Genesis中抓取。

这里的关键是只覆盖你想要的,让其余的回退到创世纪。

因此,您可以复制header.php并添加代码,但如果文件发生更改,您仍然需要更新文件的其余部分。更好的解决方案是在新的子主题中创建自己的functions.php,并使用以下方法:

add_action('wp_head', function(){
  ?>
  Enter tracking code here...
  <?php
});

然后,这将钩接到Wordpress的头部操作,并在您想要的位置打印出跟踪代码,而无需使用标题的其余部分。

当然,一旦你准备好了,去Outlook->Wordpress中的主题,你会在那里看到你的新主题。激活它并检查您的网站!

有关子主题的更多背景和提示,您可以在Wordpress Codex上查看此页面。

选项 2:创建插件

如果它只是您想要添加到您的网站的功能,您可能会发现插件更有用 - 特别是因为您可以稍后更改主题并轻松保留您的插件,并且您可以随意激活和停用它。

如果您以后要添加更多功能,您可以根据需要创建任意数量的插件。

该过程与创建上面的主题非常相似。不要在wp-content/themes文件夹中创建新文件夹,而是将其粘贴到wp-content/plugins中。然后,在该文件夹中创建一个.php文件(例如。 myplugin.php ,但您可以随心所欲地称呼它),并将以下内容添加到文件顶部:

<?php
/*
Plugin Name: My Toolset
*/

(如果您愿意,您可以添加其他信息,更多信息可在 Wordpress 插件手册的此页面上找到)

在此之下,只需放置上面主题选项中提到的完全相同的add_action()代码即可。

保存您的文件,转到 Wordpress 后台中的插件,在列表中找到您的新插件,单击激活,然后检查您的网站!

有关插件的更多背景和提示,您可以在Wordpress Codex上查看此页面。