如何在子主题中将代码添加到Header.php?


18

我第一次创建子主题,并且我对添加到标头中的代码有一些疑问。

在非子主题中,我添加了某些代码到我的header.php文件中,例如Google Analytics(分析),Google网站站长工具,买入卖出广告,Facebook开放图等。

您如何在儿童主题中做到这一点?您是否在子主题中创建了header.php文件?如果是这样,怎么做?它与我在CSS上使用的@import相同吗?

谢谢。

Answers:


24

我会参与其中wp_head。我会将其放置在插件中,以便从您的表示层中抽象出来。这允许可伸缩性和主题更改。如果错过了从一个主题到下一个主题的迁移步骤,这还可以防止任何分析附带损坏。

add_action('wp_head', 'wpse_43672_wp_head');
function wpse_43672_wp_head(){
    //Close PHP tags 
    ?>
    ADD YOUR PLAIN HTML CODE HERE
    <?php //Open PHP tags
}

谢谢。我没有制作插件的经验。我想在标题中添加大约5段代码。我需要为它们每个插入一个插件吗?
里克·史密斯

@RickSmith我在上面的帖子中添加了插件格式
Brian Fegter,2012年

4
无论使用父主题,子主题还是任何主题,正确的方法都是将此类代码放入回调中,并挂接到适当的动作挂钩中。你可以把这个代码在主题的functions.php文件,或者,甚至更好,布赖恩曾建议,把它放在一个站点特定插件
Chip Bennett 2012年

1
@BrianFegter感谢您抽出宝贵的时间来帮助我。这是一个粘贴容器,我想我还是在做错什么。:) pastebin.com/iT0bJjGE
里克·史密斯


4

要修改子主题中的标题,请将header.php从父主题复制到子主题中,然后对其进行修改。WordPress会在子主题中看到您有header.php,并使用它代替父主题header.php。

当您通过WordPress调用时,放置在子主题中的任何模板文件都将优先于父主题中的同一文件。

标签中的所有内容都应使用Brians Answer中的函数来完成。如果特定于主题,则可以将其放在主题文件夹中的名为functions.php的文件中,而无需执行任何其他步骤。


汤姆,谢谢。因此,如果我需要在header.php中安装5个不同的代码片段,我可以只制作一个插件并安装它吗?我仍然需要将header.php文件复制到我的子主题中吗?
里克·史密斯

是的,没有理由制作5个插件
Tom J Nowell

@RickSmith如果要抽象到插件,则没有理由复制header.php。:)
Brian Fegter 2012年

2
该解决方案的问题在于,更新主题后,您将错过作者编写的header.php中的修复程序。
no X '02

2

感谢Brian Fegter。如果这个答案有帮助,请在上面为Brian的答案评分。

这是一个功能齐全的示例,说明如何通过自己的插件将内容添加到“标头”中。在这种情况下,我将为“共享”和“喜欢”按钮添加Facebook Open Graph的属性。

只需使用示例代码开头的“插件脚本”中指定的名称创建一个PHP文件,然后将其放在具有相同名称但没有扩展名的文件夹中,然后将该文件夹复制到目标位置“ / wp-content /插件”。

然后在“ Wordpress”中,刷新“插件”,您将看到已安装新插件。只要激活它,您的页面就会开始包含Open Graph Facebook和Twitter的元数据。

在此处输入图片说明

非常重要: PHP文件必须使用UTF-8编码,且不带BOM,并且末尾绝对没有字符。必须确保这一点。

<?php
/*
    Plugin Name: My Facebook Open Graph Protocol
    Plugin Script: my-facebook-open-graph-protocol.php
    Plugin URI: 
    Description: Add Facebook Open Graph Protocol to header
    Author: Diego Soto (Thanks to Brian Fegter)
    Donate Link: 
    License: GPL    
    Version: 0.1-alpha
    Author URI: /wordpress/43672/how-to-add-code-to-header-php-in-a-child-theme
    Text Domain: myfogp
    Domain Path: languages/
*/

/*  Copyright 2014 Diego Soto  (http://disientoconusted.blogspot.com.ar/)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
    published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

add_action('wp_head', 'wpse_43672_wp_head');

function wpse_43672_wp_head(){
    $title = get_the_title() ." &lsaquo; ". get_bloginfo( "name", "display" );

    $src = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), array( 90,55 ), false, "" ); 

    $face_metad = get_post_meta(get_the_ID(), "metadescription", true);

    $twitter_metad = get_post_meta(get_the_ID(), "metadescription140", true);
    if (empty($twitter_metad)) 
        $twitter_metad = $face_metad;

    //Close PHP tags 
    ?>    
    <meta property="og:title" content="<?php echo esc_attr($title); ?>" />
    <meta property="og:image" content="<?php echo esc_attr($src[0]); ?>" />
    <meta property="og:url" content="<?php the_permalink(); ?>" />
    <meta property="og:description" content="<?php if (!empty($face_metad)) echo esc_attr($face_metad); else the_excerpt(); ?>" />

    <meta name="twitter:title" content="<?php echo esc_attr($title); ?>" />
    <meta name="twitter:image" content="<?php echo esc_attr($src[0]); ?>" />    
    <meta name="twitter:url" content="<?php the_permalink(); ?>" />
    <meta name="twitter:description" content="<?php if (!empty($twitter_metad)) echo esc_attr($twitter_metad); else the_excerpt(); ?>" />
    <?php //Open PHP tags
}
?>

对插件功能感兴趣的任何人。

  • 标题将是当前页面名称和站点名称的串联。

  • 如果存在一个名为“ metadescription”的自定义字段,则插件会尝试从该字段获取描述。否则,请摘录说明。

  • 作为图像,插件尝试使用页面上特色图像的缩略图。


2
esc_attr()用于HTML属性内容。
fuxia

如您所说,我已修改为使用esc_attr()。谢谢。
DiegoSoto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.