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

在非子主题中,我添加了某些代码到我的header.php文件中,例如谷歌分析,谷歌网站管理员工具,买入卖出广告,Facebook开放图等。 >
如何在儿童主题中做到这一点?您是否在子主题中创建了header.php文件?如果是这样,如何完成?它与在CSS上使用的@import相同吗?

谢谢。

#1 楼

我会加入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段代码。我需要为它们每个插入一个插件吗?

–里克·史密斯
2012-2-27在16:26

@RickSmith我在上面的帖子中添加了插件格式

– Brian Fegter
2012-2-27在16:35

无论使用父主题,子主题还是任何主题,正确的方法都是将此类代码放入回调中,并挂接到适当的动作挂钩中。您可以将此代码放在Theme的functions.php文件中,或者甚至更好,如Brian所建议的那样,将其放在特定于站点的插件中。

–芯片Bennett
2012-2-27在17:33

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

–里克·史密斯
2012年2月27日在20:34

让我们继续聊天中的讨论

– Brian Fegter
2012-2-27在20:40

#2 楼

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

您放入子主题中的任何模板文件都将优先于由WordPress调用时,父主题。如果特定于主题,则可以将其放在主题文件夹中的名为functions.php的文件中,而无需执行任何其他步骤。

评论


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

–里克·史密斯
2012-2-27在17:58

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

– Tom J Nowell♦
2012年2月27日在17:59

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

– Brian Fegter
2012-2-27在18:16

此解决方案的问题在于,更新主题时,您会错过作者在header.php中所做的修复。

–敲X
16-2-24在7:32

WordPress是否会覆盖整个文件,还是只是将新内容附加到父文件?

– OKER
20-05-31在8:44

#3 楼

感谢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: https://wordpress.stackexchange.com/questions/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”的自定义字段,则插件会尝试
从该字段获取描述。否则,请摘录中的
说明。
作为图像,插件尝试使用页面上精选图像的缩略图。


评论


请使用esc_attr()作为HTML属性的内容。

– fuxia♦
14年8月14日在0:27

如您所说,我已修改为使用esc_attr()。谢谢。

–DiegoSoto
2014年8月14日下午4:19