วิธีเพิ่มรหัสใน Header.php ในธีมลูก?


18

ฉันกำลังสร้างธีมลูกเป็นครั้งแรกและฉันมีคำถามสองสามข้อเกี่ยวกับการเพิ่มโค้ดในส่วนหัว

ในชุดรูปแบบที่ไม่ใช่ลูกมีรหัสบางอย่างที่ฉันเพิ่มลงในไฟล์ header.php ของฉันเช่นการวิเคราะห์ของ Google, เครื่องมือเว็บมาสเตอร์ของ Google, ซื้อโฆษณาขาย, กราฟเปิด Facebook และอื่น ๆ ....

คุณจะทำสิ่งนี้ในธีมลูกได้อย่างไร คุณสร้างไฟล์ header.php ในธีมลูกของคุณหรือไม่? ถ้าเป็นเช่นนั้นจะทำอย่างไร? มันเหมือนกับ @import เหมือนกับที่ฉันใช้กับ css หรือไม่?

ขอบคุณ

คำตอบ:


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 ชิ้นที่ฉันต้องการเพิ่มลงในส่วนหัว ฉันจะต้องเสียบปลั๊กให้แต่ละอันหรือไม่?
Rick Smith

@RickSmith ฉันเพิ่มรูปแบบปลั๊กอินลงในโพสต์ด้านบน
Brian Fegter

4
ไม่ว่าจะใช้ Parent Theme, Child Theme หรือ Theme ใด ๆ ก็ตามวิธีการที่ถูกต้องคือการใส่รหัสดังกล่าวในการติดต่อกลับติดเข้ากับ hook การกระทำที่เหมาะสม คุณสามารถใส่รหัสนี้ในรูปแบบของfunctions.phpไฟล์หรือดียิ่งขึ้นและไบรอันได้แนะนำให้ใส่ไว้ในเว็บไซต์ที่เฉพาะเจาะจงปลั๊กอิน
Chip Bennett

1
@BrianFegter ขอบคุณที่สละเวลาช่วยฉันด้วย นี่คือถังขยะฉันคิดว่าฉันยังคงทำอะไรผิดไป :) pastebin.com/iT0bJjGE
Rick Smith


4

หากต้องการแก้ไขส่วนหัวในธีมลูกให้คัดลอก header.php จากธีมหลักไปยังธีมลูกและปรับเปลี่ยนใหม่ WordPress จะเห็นว่าคุณมี header.php ในชุดรูปแบบลูกของคุณและใช้แทนส่วนหัวของชุดรูปแบบ header.php

ไฟล์เทมเพลตใด ๆ ที่คุณใส่ในธีมลูกของคุณจะมีความสำคัญมากกว่าไฟล์เดียวกันในธีมหลักเมื่อเรียกโดย WordPress

ทุกสิ่งที่ไปในแท็กควรทำโดยใช้บางสิ่งบางอย่างเช่นฟังก์ชั่นในคำตอบ Brians หากเป็นรูปแบบเฉพาะคุณสามารถวางไว้ในไฟล์ชื่อ functions.php ในโฟลเดอร์ชุดรูปแบบของคุณโดยไม่มีขั้นตอนพิเศษใด ๆ


ทอมขอบคุณ ดังนั้นหากฉันต้องการติดตั้ง 5 snips ของรหัสที่แตกต่างกันใน header.php ฉันสามารถสร้างปลั๊กอินหนึ่งตัวและติดตั้งได้ไหม ฉันจะยังต้องคัดลอกไฟล์ header.php ไปยังธีมลูกของฉันหรือไม่?
Rick Smith

ใช่ไม่มีเหตุผลที่จะทำ 5 ปลั๊กอิน
Tom J Nowell

@RickSmith หากคุณกำลังสรุปไปยังปลั๊กอินไม่มีเหตุผลที่จะคัดลอก header.php :)
Brian Fegter

2
ปัญหาเกี่ยวกับการแก้ปัญหานี้คือเมื่อมีการปรับปรุงชุดรูปแบบคุณจะพลาดการแก้ไขใน header.php ที่สร้างโดยผู้เขียน
เคาะ X

2

ขอขอบคุณที่ไบรอัน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.