Bir alt temada Header.php'ye kod nasıl eklenir?


18

İlk kez bir çocuk teması oluşturuyorum ve başlığa eklenen kodla ilgili birkaç sorum vardı.

Çocuk olmayan bir temada goer analytics, google web yöneticisi araçları, reklam satın al, Facebook açık grafiği vb.Gibi header.php dosyasına eklediğim belirli kodlar var.

Bunu bir çocuk temasında nasıl yaparsınız? Alt temanızda bir header.php dosyası oluşturuyor musunuz? Varsa bu nasıl yapılır? Css üzerinde kullandığım @import ile aynı mı?

Teşekkürler.

Yanıtlar:


24

Ben wp_headeyleme bağlanırdım. Sunum katmanınızdan soyutlamak için bunu bir eklentiye yerleştiririm. Bu ölçeklenebilirlik ve temaların değiştirilmesini sağlar. Bu, bir temadan diğerine geçişte bir adımın kaçırılması durumunda analitiklerin teminat hasarını da önler.

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
}

Teşekkürler. Bir eklenti yapma konusunda deneyimim yok. Başlığa eklemek istediğim yaklaşık 5 adet kodum var. Her biri için bir eklenti yapmam gerekir mi?
Rick Smith

@RickSmith Yukarıdaki yazıya eklenti formatını ekledim
Brian Fegter

4
Bir Ana Tema, Çocuk Teması veya herhangi bir Tema kullansanız da, doğru yaklaşım bu kodu uygun eylem kancasına bağlanmış bir geri çağırma içine koymaktır. Sen Tema'nın Bu kodu koyabilirsiniz functions.phpdosyaya veya daha da iyisi ve Brian önerdiği üzere, koy bir site özgü Eklentisi .
Chip Bennett

1
@BrianFegter Bu konuda bana yardımcı olmak için zaman ayırdığınız için teşekkür ederiz. İşte bir macun, sanırım hala yanlış bir şey yapıyorum. :) pastebin.com/iT0bJjGE
Rick Smith


4

Bir alt temada üstbilgiyi değiştirmek için üst temanın header.php dosyasını alt temaya kopyalayın ve değiştirin. WordPress, alt temanızda bir header.php dosyanız olduğunu görür ve bunu üst tema header.php yerine bunu kullanır.

Alt temanıza koyduğunuz şablon dosyaları, WordPress tarafından çağrıldığında üst temada aynı dosyaya göre öncelik kazanacaktır.

Etikete giren her şey, Brians'ın cevabındaki işlev gibi bir şey kullanılarak yapılmalıdır. Temaya özelse, ek klasörler olmadan tema klasörünüzdeki function.php adlı bir dosyaya koyabilirsiniz.


Tom, teşekkürler. Header.php dosyasına 5 farklı kod parçacığı yüklemem gerekirse, sadece bir eklenti yapabilir ve bunu yükleyebilir miyim? Header.php dosyasını yine de alt temama kopyalamam gerekir mi?
Rick Smith

Evet, 5 eklenti yapmak için bir neden yok
Tom J Nowell

@RickSmith Bir eklentiye özet yapıyorsanız, header.php dosyasını kopyalamak için bir neden yoktur. :)
Brian Fegter

2
Bu çözümdeki sorun, tema güncellendiğinde, yazar tarafından yapılan header.php dosyasındaki düzeltmeleri kaçırmanızdır.
Vuruşlar, X,

2

Brian Fegter'a teşekkürler . Bu cevap yardımcı olursa, lütfen hemen yukarıdaki Brian'ın cevabını değerlendirin .

Bu, "üstbilgiye" kendi eklentisiyle bir şeyler nasıl ekleyeceğinizin tamamen işlevsel bir örneğidir. Bu durumda, Paylaş ve Beğen düğmeleri için Facebook Açık Grafik özelliklerini ekliyorum.

Örnek kodun başında "Eklenti Komut Dosyası" nda belirtilen bir PHP dosyası oluşturun, uzantı olmadan aynı ada sahip bir klasöre yerleştirin ve bu klasörü "/ wp-content / eklentiler".

Ardından "Wordpress" içinde "Eklentileri" yenileyin ve yeni eklentinizin kurulu olduğunu göreceksiniz. Sadece etkinleştirin ve sayfalarınız Açık Grafik Facebook ve Twitter meta verilerini içermeye başlayacaktır.

resim açıklamasını buraya girin

ÇOK ÖNEMLİ: PHP dosyası BOM olmadan UTF-8 olarak kodlanmalıdır ve sonunda kesinlikle hiçbir karakter bulunmamalıdır. Bunu sağlamalı.

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

Eklentinin işlevselliği ile ilgilenen herkes.

  • Başlık, geçerli sayfanın adının ve site adının birleşimi olacaktır.

  • "Metadescription" adlı özel bir alan varsa, eklenti bu alandan açıklama almaya çalışır. Aksi takdirde, alıntıdan açıklamayı alın.

  • Resim olarak eklenti, sayfada öne çıkan resmin küçük resmini kullanmaya çalışır.


2
Lütfen esc_attr()HTML özelliği içerikleri için kullanın .
fuxia

Bana söylediğin gibi esc_attr () kullanacak şekilde değiştirdim. Teşekkür ederim.
DiegoSoto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.