Як додати код до 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 фрагментів коду, які я хотів би додати до заголовка. Чи потрібно мені зробити плагін для кожного з них?
Рік Сміт

@RickSmith Я додав формат плагіна до публікації вище
Брайан Фегтер,

4
Якщо ви використовуєте батьківську тему, дочірню тему чи будь-яку тему, правильним підходом є введення такого коду у зворотній виклик, підключений до відповідного гака дій. Ви можете помістити цей код у functions.phpфайл теми , або, ще краще, і, як запропонував Брайан, помістити його в плагін, специфічний для сайту .
Чіп Беннетт

1
@BrianFegter Дякуємо, що знайшли час, щоб допомогти мені у цьому. Ось контейнер для пасти, я думаю, я все ще щось роблю не так. :) pastebin.com/iT0bJjGE
Рік Сміт


4

Щоб змінити заголовок у дочірній темі, скопіюйте header.php з батьківської теми в дочірню тему та змініть її. WordPress побачить, що ви маєте header.php у своїй дочірній темі, і використовуватиме це замість батьківської теми header.php

Будь-які файли шаблонів, розміщені у вашій дочірній темі, матимуть пріоритет над тим самим файлом у батьківській темі, коли викликає WordPress.

Все, що йде в тезі, слід робити за допомогою чогось такого, як функція у відповіді Brians. Якщо це конкретна тема, ви можете помістити її у файл під назвою function.php у папці тем без додаткових кроків.


Том, спасибі. Отже, якщо мені потрібно встановити 5 різних фрагментів коду в header.php, чи можу я просто зробити один плагін і встановити його? Чи все-таки мені потрібно буде скопіювати файл header.php у свою дочірню тему?
Рік Сміт

Так, немає підстав робити 5 плагінів
Tom J Nowell

@RickSmith Якщо ви абстрагуєтеся на плагін, немає жодної причини копіювати через header.php. :)
Брайан Фегтер

2
Проблема цього рішення полягає в тому, що коли тема буде оновлена, ви пропустите виправлення, зроблені автором header.php.
Збиває X

2

Завдяки Брайану Фегтеру . Якщо ця відповідь допомагає, будь ласка, оцініть відповідь Брайана прямо тут вище.

Це повністю функціональний приклад того, як додати речі до "заголовка" власним плагіном. У цьому випадку я додаю властивості Facebook Open Graph для кнопок Share і Like.

Просто створіть файл 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
}
?>

Усі, хто цікавиться функціоналом плагіна.

  • Заголовок буде поєднанням назви поточної сторінки та назви сайту.

  • Якщо спеціальне поле під назвою "метадискрипція" існує, плагін намагається взяти опис з цього поля. В іншому випадку візьміть опис із уривку.

  • Як зображення плагін намагається використовувати ескіз зображеного зображення на сторінці.


2
Будь ласка, використовуйте esc_attr()для вмісту атрибутів HTML.
fuxia

Я змінив, щоб використовувати esc_attr (), як ви мені сказали. Дякую.
DiegoSoto
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.