Cum să adaug cod în Header.php într-un tema copil?
Încerc să creez un tema copil pentru prima dată și am câteva întrebări legate de adăugarea de cod în header.
Într-un tema obișnuit, adaug anumite coduri în fișierul header.php, cum ar fi Google Analytics, Google Webmaster Tools, Buy Sell Ads, Facebook Open Graph, etc.
Cum se face acest lucru într-un tema copil? Creez un fișier header.php în tema copil? Dacă da, cum se face acest lucru? Este la fel ca @import pe care l-am folosit în CSS?
Mulțumesc.

Aș folosi acțiunea wp_head
. Aș plasa acest cod într-un plugin pentru a-l abstractiza de stratul de prezentare. Acest lucru permite scalabilitate și schimbarea temelor. De asemenea, previne orice daună colaterală la analize dacă un pas este ratat în migrarea de la o temă la alta.
add_action('wp_head', 'wpse_43672_wp_head');
function wpse_43672_wp_head(){
//Închide tag-urile PHP
?>
ADAUGĂ AICI CODUL TĂU HTML
<?php //Deschide tag-urile PHP
}

Mulțumesc. Nu am nicio experiență în crearea de plugin-uri. Am aproximativ 5 bucăți de cod pe care aș dori să le adaug în header. Ar trebui să creez un plugin pentru fiecare dintre ele?

Indiferent dacă folosești o Temă Părinte, Temă Copil sau orice altă Temă, abordarea corectă este să pui acest cod într-un callback, atașat la un action hook corespunzător. Poți pune acest cod în fișierul functions.php
al Temei, sau, și mai bine, așa cum a sugerat Brian, să-l pui într-un Plugin specific site-ului.

@BrianFegter Mulțumesc mult. Lucrul cu PHP / teme child este nou pentru mine, așa că învăț pe parcurs. Mulțumesc pentru răbdare. :) În vechea mea temă, am intrat în admin-ul WordPress, apoi în editor și am adăugat asta în header. <meta property="fb:page_id" content="12345678" /> Este mai bine să adaug toate acestea în plugin?

@BrianFegter Ok, deci tocmai am pus codul menționat mai sus în acel plugin, iar când încearcă să se activeze primesc această eroare. Ce crezi că fac greșit? Parse error: syntax error, unexpected '<' in /home/downsynd/public_html/wpdallas.com/test/wp-content/plugins/Ricks-Code/Rick-Widget.php on line 22

@RickSmith poți posta tot conținutul din Rick-Widget.php
pe PasteBin și să-l legi aici?

@RickSmith cum a menționat Chip, orice element specific site-ului ar trebui să fie inclus în acel plugin.

@BrianFegter Linkul anterior de pe pastebin a expirat. Iată unul nou. http://pastebin.com/kmmKkSDS

@RickSmith Vezi ultima mea editare. Sintaxa ta PHP este greșită. Trebuie să folosești echo sau să închizi tag-urile php dacă vrei să postezi HTML brut într-o funcție. ?> YOUR HTML <?php

@BrianFegter Mulțumesc frumos! Am înțeles! A funcționat. Încă o întrebare rapidă. În vechea mea temă aveam niște cod java script pentru cumpărare/vânzare pe care l-am adăugat în secțiunea de footer a temei (mi s-a spus să fac asta pentru ca tema mea să se încarce mai întâi.) Ar fi ok să adaug acel cod aici, sau ar trebui să-l adaug în footer?

Poți pur și simplu să adaugi o altă acțiune și callback pentru wp_footer

@BrianFegter ok, Sugerezi să punem toate aceste lucruri în footer? Cum ar fi Google Webmaster Tools, etc...? Nu sunt sigur care este cea mai bună practică....

@BrianFegter Bine, acum încerc să adaug niște JavaScript la acel plugin. Continuând cu exemplul tău de mai sus, cum pot adăuga JavaScript la el?

Adăugarea unui Fragment de Cod
HTML
Dacă doriți să adăugați un fragment de cod, de exemplu o meta etichetă etc., în secțiunea <head>
, atunci ar trebui să utilizați acțiunea wp_head
:
add_action( 'wp_head', 'wpse_43672_wp_head' );
function wpse_43672_wp_head() : void {
?>
<meta ..... />
<?php
}
Există de asemenea admin_head
și wp_footer
Javascript & CSS
Ați putea folosi codul de mai sus pentru a adăuga și Javascript, dar în schimb JS personalizat ar trebui să fie încărcat ca un fișier JS, sau inclus ca JS inline prin wp_add_inline_script
atașat la un handle JS existent deja încărcat.
https://developer.wordpress.org/reference/functions/wp_add_inline_script/
Același lucru este valabil și pentru CSS, care are wp_add_inline_style
https://developer.wordpress.org/reference/functions/wp_add_inline_style/
Modificarea Antetului Site-ului
Rețineți că odată ce faceți acest lucru, nu veți mai vedea modificările aduse în tema părinte atunci când aceasta se actualizează, pentru acele fișiere pe care le suprascrieți și modificați.
Într-o Temă cu Blocuri
Dacă tema dumneavoastră este o temă cu blocuri, atunci puteți face acest lucru mergând în editorul de site și făcând modificări în zona de Administrare.
Într-o Temă Clasică
Dacă site-ul dumneavoastră folosește o temă clasică PHP, atunci puteți utiliza o temă copil.
Pentru a modifica antetul într-o temă copil, copiați fișierul header.php
din tema părinte în tema copil și apoi modificați-l. WordPress va detecta că aveți un header.php
în tema copil și va folosi acesta în locul header.php
din tema părinte.
Orice fișiere șablon pe care le puneți în tema copil vor avea prioritate față de același fișier din tema părinte atunci când sunt apelate de WordPress.
Orice ar trebui să fie plasat în eticheta <head>
ar trebui făcut folosind ceva similar cu funcția din răspunsul lui Brian. Dacă este specific temei, îl puteți pune într-un fișier numit functions.php
în folderul temei fără pași adiționali.

Tom, mulțumesc. Deci dacă am nevoie să instalez 5 fragmente diferite de cod în header.php, aș putea crea un singur plugin și să instalez acela? Aș mai avea nevoie să copiez fișierul header.php în tema mea copil?

@RickSmith Dacă abstractizezi într-un plugin, nu ai niciun motiv să copiezi header.php. :)

Problema cu această soluție este că atunci când tema este actualizată, veți pierde corecțiile din header.php făcute de autor.

Mulțumiri lui Brian Fegter. Dacă acest răspuns vă ajută, vă rugăm să evaluați răspunsul lui Brian chiar aici deasupra.
Acesta este un exemplu complet funcțional despre cum să adăugați elemente în "header" printr-un propriu plugin. În acest caz, adaug proprietățile Facebook Open Graph pentru butoanele de Share și Like.
Pur și simplu creați un fișier PHP cu numele specificat în "Plugin Script" la începutul codului exemplu, plasați-l într-un folder cu același nume fără extensie, evident, și copiați acest folder în destinația "/wp-content/plugins".
Apoi în interiorul "Wordpress", reîmprospătați "Plugins" și veți vedea noul vostru plugin instalat. Doar activați-l, iar paginile voastre vor începe să conțină metadatele Open Graph Facebook și Twitter.
FOARTE IMPORTANT: Fișierul PHP trebuie să fie codificat în UTF-8 fără BOM și nu trebuie să conțină absolut niciun caracter la final. Asigurați-vă de acest lucru.
<?php
/*
Plugin Name: My Facebook Open Graph Protocol
Plugin Script: my-facebook-open-graph-protocol.php
Plugin URI:
Description: Adaugă Facebook Open Graph Protocol în header
Author: Diego Soto (Mulțumiri lui Brian Fegter)
Donate Link:
License: GPL
Version: 0.1-alpha
Author URI: https://wordpress.stackexchange.com/questions/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/)
Acest program este software liber; îl puteți redistribui și/sau modifica
în conformitate cu termenii Licenței Publice Generale GNU, versiunea 2,
așa cum este publicată de Free Software Foundation.
Acest program este distribuit în speranța că va fi util,
dar FĂRĂ NICI O GARANȚIE; fără măcar garanția implicită de
COMERCIALIZARE sau ADAPTARE LA UN SCOP PARTICULAR. Consultați
Licența Publică Generală GNU pentru mai multe detalii.
Ar trebui să fi primit o copie a Licenței Publice Generale GNU
împreună cu acest program; dacă nu, scrieți la 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() ." ‹ ". 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;
//Închideți tag-urile PHP
?>
<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 //Deschideți tag-urile PHP
}
?>
Pentru cei interesați de funcționalitatea plugin-ului.
Titlul va fi concatenarea numelui paginii curente și numele site-ului.
Dacă există un câmp personalizat numit "metadescription", pluginul încearcă să ia descrierea din acest câmp. Altfel, ia descrierea din fragment.
Ca imagine, pluginul încearcă să utilizeze miniatura imaginii reprezentative a paginii.
