Bagaimana cara menambahkan kode ke Header.php di tema anak?

18

Saya membuat tema anak untuk pertama kalinya dan saya punya beberapa pertanyaan tentang kode yang ditambahkan ke header.

Dalam tema bukan anak ada kode tertentu yang saya tambahkan ke file header.php saya seperti google analytics, google webmaster tools, beli iklan jual, Facebook open graph, dll ....

Bagaimana Anda melakukan ini dalam tema anak? Apakah Anda membuat file header.php dalam tema anak Anda? Jika demikian, bagaimana hal ini dilakukan? Apakah sama dengan @import seperti yang saya gunakan pada css?

Terima kasih.

Rick Smith
sumber

Jawaban:

24

Saya akan melakukan wp_headaksi. Saya akan menempatkan ini di plugin untuk abstrak dari lapisan presentasi Anda. Ini memungkinkan skalabilitas dan perubahan tema. Ini juga mencegah kerusakan analitik jika ada langkah yang terlewatkan dalam migrasi dari satu tema ke yang berikutnya.

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
}
Brian Fegter
sumber
Terima kasih. Saya tidak punya pengalaman membuat plug in. Saya punya sekitar 5 buah kode yang ingin saya tambahkan ke header. Apakah saya perlu membuat plug in untuk masing-masing?
Rick Smith
@RickSmith Saya menambahkan format plugin ke posting di atas
Brian Fegter
4
Apakah menggunakan Tema Induk, Tema Anak, atau Tema apa pun, pendekatan yang benar adalah dengan memasukkan kode seperti itu dalam panggilan balik, terhubung ke kait tindakan yang sesuai. Anda bisa menempatkan kode ini di Tema ini functions.phpfile, atau, bahkan lebih baik dan sebagai Brian telah menyarankan, memasukkannya ke dalam sebuah situs khusus Plugin .
Chip Bennett
1
@BrianFegter Terima kasih telah meluangkan waktu untuk membantu saya dengan ini. Ini adalah tempat sampah, saya pikir saya masih melakukan sesuatu yang salah. :) pastebin.com/iT0bJjGE
Rick Smith
1
mari kita lanjutkan diskusi ini dalam obrolan
Brian Fegter
4

Untuk memodifikasi header di tema anak, salin header.php dari tema induk ke tema anak dan kemudian memodifikasinya. WordPress akan melihat bahwa Anda memiliki header.php di tema anak Anda dan menggunakannya sebagai ganti header.php tema induk

File templat apa pun yang Anda masukkan ke dalam tema anak Anda akan diprioritaskan daripada file yang sama dalam tema induk ketika dipanggil oleh WordPress.

Apa pun yang ada di tag harus dilakukan menggunakan sesuatu seperti fungsi dalam jawaban Brians. Jika tema tertentu, Anda dapat meletakkannya di file bernama functions.php di folder tema Anda tanpa langkah tambahan.

Tom J Nowell
sumber
Tom, terima kasih. Jadi jika saya perlu menginstal 5 snips kode yang berbeda di header.php, dapatkah saya membuat satu plugin dan menginstalnya? Apakah saya masih perlu menyalin file header.php ke tema anak saya?
Rick Smith
Ya tidak ada alasan untuk membuat 5 plugin
Tom J Nowell
@RickSmith Jika Anda melakukan abstraksi ke sebuah plugin, tidak ada alasan untuk menyalin melalui header.php. :)
Brian Fegter
2
Masalah dengan solusi ini adalah ketika tema diperbarui, Anda akan kehilangan perbaikan di header.php yang dibuat oleh penulis.
Knocks X
2

Terima kasih untuk Brian Fegter . Jika jawaban ini membantu, beri peringkat untuk jawaban Brian di sini.

Ini adalah contoh yang berfungsi penuh tentang cara menambahkan sesuatu ke "header" dengan plugin sendiri. Dalam hal ini, saya menambahkan properti Facebook Open Graph untuk tombol Bagikan dan Suka.

Cukup buat file PHP dengan nama yang ditentukan dalam "Plugin Script" di awal kode sampel, letakkan di folder dengan nama yang sama tanpa ekstensi, jelas, dan salin folder ini ke tujuan "/ wp-content / plugin ".

Kemudian di dalam "Wordpress", segarkan "Plugin" dan Anda akan melihat plugin baru Anda terpasang. Aktifkan saja, dan halaman Anda akan mulai berisi metadata dari Open Graph Facebook dan Twitter.

masukkan deskripsi gambar di sini

SANGAT PENTING: File PHP harus dikodekan dalam UTF-8 tanpa BOM, dan pada akhirnya tidak boleh memiliki karakter sama sekali. Harus memastikan ini.

<?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
}
?>

Siapa pun yang tertarik dengan fungsionalitas plugin.

  • Judul akan menjadi gabungan dari nama halaman saat ini dan nama situs.

  • Jika bidang khusus yang disebut "metadescription" ada, plugin mencoba mengambil deskripsi dari bidang ini. Kalau tidak, ambil deskripsi dari kutipan.

  • Sebagai gambar, plugin mencoba menggunakan thumbnail gambar yang ditampilkan pada halaman.

DiegoSoto
sumber
2
Silakan gunakan esc_attr()untuk konten atribut HTML.
fuxia
Saya dimodifikasi untuk menggunakan esc_attr () seperti yang Anda katakan. Terima kasih.
DiegoSoto