Jak dodać kod do Header.php w motywie potomnym?


18

Tworzę motyw podrzędny po raz pierwszy i miałem kilka pytań dotyczących kodu dodanego do nagłówka.

W motywie innym niż potomny jest pewien kod, który dodaję do pliku header.php, taki jak Google Analytics, narzędzia Google dla webmasterów, kupuj reklamy sprzedaży, otwórz wykres Facebooka itp.

Jak to zrobić w motywie podrzędnym? Czy tworzysz plik header.php w motywie podrzędnym? Jeśli tak, jak to się robi? Czy to to samo, co @import, którego użyłem na css?

Dzięki.

Odpowiedzi:


24

Chciałbym dołączyć do wp_headakcji. Umieściłbym to we wtyczce, aby wyodrębnić ją z warstwy prezentacji. Pozwala to na skalowalność i zmianę motywów. Zapobiega to również wszelkim uszkodzeniom ubocznym w zakresie analizy, jeśli pominięto krok w migracji z jednego motywu do drugiego.

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
}

Dzięki. Nie mam doświadczenia w tworzeniu wtyczki. Mam około 5 fragmentów kodu, które chciałbym dodać do nagłówka. Czy muszę tworzyć wtyczki dla każdego z nich?
Rick Smith

@RickSmith Dodałem format wtyczki do powyższego postu
Brian Fegter

4
Niezależnie od tego, czy używasz motywu nadrzędnego, motywu podrzędnego lub dowolnego motywu, poprawnym podejściem jest umieszczenie takiego kodu w wywołaniu zwrotnym, podłączonym do odpowiedniego zaczepu akcji. Możesz umieścić ten kod w functions.phppliku motywu , a nawet lepiej, jak zasugerował Brian, umieścić go we wtyczce specyficznej dla witryny .
Chip Bennett

1
@BrianFegter Dzięki za poświęcenie czasu, aby mi w tym pomóc. Oto kosz na pastę, myślę, że nadal coś robię źle. :) pastebin.com/iT0bJjGE
Rick Smith


4

Aby zmodyfikować nagłówek w kompozycji podrzędnej, skopiuj header.php z kompozycji nadrzędnej do kompozycji podrzędnej, a następnie zmodyfikuj ją. WordPress zobaczy, że masz plik header.php w motywie podrzędnym i użyje go zamiast motywu nadrzędnego header.php

Wszystkie pliki szablonów, które umieścisz w motywie podrzędnym, będą miały wyższy priorytet niż ten sam plik w motywie nadrzędnym, gdy zostaną wywołane przez WordPress.

Wszystko, co znajduje się w tagu, powinno być wykonane przy użyciu czegoś takiego jak funkcja w odpowiedzi Briansa. Jeśli jest specyficzny dla motywu, możesz umieścić go w pliku o nazwie functions.php w folderze motywu bez żadnych dodatkowych kroków.


Tom, dzięki. Więc jeśli muszę zainstalować 5 różnych fragmentów kodu w pliku header.php, czy mogę zrobić tylko jedną wtyczkę i zainstalować ją? Czy nadal będę musiał skopiować plik header.php do motywu podrzędnego?
Rick Smith

Tak, nie ma powodu, aby tworzyć 5 wtyczek
Tom J Nowell

@RickSmith Jeśli pobierasz abonament do wtyczki, nie ma powodu, aby kopiować przez header.php. :)
Brian Fegter

2
Problem z tym rozwiązaniem polega na tym, że po zaktualizowaniu motywu przegapisz poprawki w pliku header.php wprowadzone przez autora.
Puka X

2

Dzięki Brian Fegter . Jeśli ta odpowiedź pomoże, oceń odpowiedź Briana tutaj.

Jest to w pełni funkcjonalny przykład dodawania elementów do „nagłówka” za pomocą własnej wtyczki. W tym przypadku dodaję właściwości Facebook Open Graph dla przycisków Share i Like.

Wystarczy utworzyć plik PHP o nazwie podanej w „Skrypcie wtyczki” na początku przykładowego kodu, umieścić go w folderze o tej samej nazwie bez rozszerzenia i oczywiście skopiować ten folder do miejsca docelowego ”/ wp-content / wtyczki ”.

Następnie w „Wordpress” odśwież „Wtyczki”, a zobaczysz nową zainstalowaną wtyczkę. Wystarczy go aktywować, a strony zaczną zawierać metadane Open Graph na Facebooku i Twitterze.

wprowadź opis zdjęcia tutaj

BARDZO WAŻNE: plik PHP musi być zakodowany w UTF-8 bez BOM i na końcu nie powinien mieć żadnych znaków. Musisz to zapewnić.

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

Każdy, kto jest zainteresowany funkcjonalnością wtyczki.

  • Tytuł będzie konkatenacją nazwy bieżącej strony i nazwy witryny.

  • Jeśli istnieje niestandardowe pole o nazwie „metadescription”, wtyczka próbuje pobrać opis z tego pola. W przeciwnym razie weź opis z fragmentu.

  • Jako obraz wtyczka próbuje użyć miniatury wyróżnionego obrazu na stronie.


2
Użyj esc_attr()dla zawartości atrybutu HTML.
fuxia

Zmodyfikowałem użycie Esc_attr (), jak mi powiedziałeś. Dziękuję Ci.
DiegoSoto,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.