Как добавить код в Header.php в дочернюю тему?
3 ответ
- голосов
-
- 2012-02-27
Я бы подключился к действию
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 }
I would hook into the
wp_head
action. I would place this in a plugin so as to abstract it from your presentation layer. This allows for scalability and changing of themes. This also prevents any analytics collateral damage if a step is missed in migration from one theme to the next.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 фрагментов кода,которые я хотел бы добавить в заголовок.Нужно ли мне делать плагин для каждого из них?Thanks. I don't have any experience in making a plug in. I have about 5 pieces of code I'd like to add into the header. Would I need to make a plug in for each of them?
- 0
- 2012-02-27
- Rick Smith
-
@RickSmith Я добавил формат плагина в пост выше@RickSmith I added the plugin format to the post above
- 0
- 2012-02-27
- Brian Fegter
-
Независимо от того,используется ли родительская тема,дочерняя тема или любая другая тема,* правильный * подход - поместить такой код в обратный вызов,привязанный к соответствующему хуку действия.Вы можете поместить этот код в файл темы `functions.php` или,что еще лучше,как предложил Брайан,поместить его в [** подключаемый модуль для конкретного сайта **] (http://ottopress.com/2011/create-a-site-specific-snippets-plugin/).Whether using a Parent Theme, Child Theme, or any Theme whatsoever, the *correct* approach is to put such code in a callback, hooked into the appropriate action hook. You could put this code in the Theme's `functions.php` file, or, even better and as Brian has suggested, put it in [a **site-specific Plugin**](http://ottopress.com/2011/creating-a-site-specific-snippets-plugin/).
- 4
- 2012-02-27
- Chip Bennett
-
@BrianFegter Большое спасибо.Работа с Php/дочерними темами для меня в новинку,поэтому я учусь в процессе. Спасибо за ваше терпение. :) В моей старой теме я зашел в админку WordPress,а затем в редактор и добавил это в заголовок.
Есть лучший способ добавить все это в плагин? @BrianFegter Thanks so much. Working with Php / child themes is new to me, so I"m learning as I go. Thanks for your patience. :) In my old theme, I went into wordpress admin, than to the editor and added this to the header. Is the better way to add all of that to the plug in?- 0
- 2012-02-27
- Rick Smith
-
@RickSmith Нет проблем.Вот почему этот форум существует.:)@RickSmith No problem. That's why this forum exists. :)
- 0
- 2012-02-27
- Brian Fegter
-
@BrianFegter Хорошо,поэтому я просто поместил вышеупомянутый код в этот плагин,и когда он пытается активироваться,я получаю эту ошибку.Как вы думаете,что я делаю не так?Ошибка синтаксического анализа: синтаксическая ошибка,неожиданный знак '<' в/home/downsynd/public_html/wpdallas.com/test/wp-content/plugins/Ricks-Code/Rick-Widget.php в строке 22@BrianFegter Ok, so I just placed the above mentioned code into that plugin, and when it tries to active I get this error. What do you think I'm doing wrong? Parse error: syntax error, unexpected '<' in /home/downsynd/public_html/wpdallas.com/test/wp-content/plugins/Ricks-Code/Rick-Widget.php on line 22
- 0
- 2012-02-27
- Rick Smith
-
@RickSmith Можете ли вы опубликовать * весь * файл `Rick-Widget.php` в [PasteBin] (http://pastebin.com) и связать его?@RickSmith can you post *all* of `Rick-Widget.php` into a [PasteBin](http://pastebin.com), and link it?
- 0
- 2012-02-27
- Chip Bennett
-
@RickSmith,например Chip,опубликовал,все,что относится к конкретному сайту,должно входить в этот плагин.@RickSmith like Chip posted, anything site specific should go in that one plugin.
- 0
- 2012-02-27
- Brian Fegter
-
@BrianFegter Вот и все.http://pastebin.com/cLLkdiDv@BrianFegter Here ya go. http://pastebin.com/cLLkdiDv
- 0
- 2012-02-27
- Rick Smith
-
@BrianFegter Срок действия файлаpastbin истек.вот новый.http://pastebin.com/kmmKkSDS@BrianFegter That pastbin expired. here is a new one. http://pastebin.com/kmmKkSDS
- 0
- 2012-02-27
- Rick Smith
-
@RickSmith См. Мое последнее изменение.Ваш синтаксис PHP неверен.Вы должны использоватьecho или закрыть свои тегиphp,если вы хотите разместить необработанный HTML в функции.`?> ВАШ HTML Php`@RickSmith See my latest edit. Your PHP syntax is wrong. You have to use echo or close out your php tags if you want to post raw HTML in a function. `?> YOUR HTML
- 0
- 2012-02-27
- Brian Fegter
@BrianFegter Спасибо,чувак!Я понял!Это сработало.Еще один быстрый вопрос.В моей старой теме у меня был какой-тоjava-скрипт на покупку и продажу,который я добавил в нижний колонтитул темы (мне сказали сделать это,поэтому моя тема загрузилась первой). Можно добавить этот код здесь,или я должен добавить его внижний колонтитул?)@BrianFegter Thanks man! I got it! That worked. One more quick question. In my old theme I had some buy sell java script that I added to the footer section of theme (I was told to do that so my theme loaded first.) Would it be ok to add that code here, or should I add it to the footer? )- 0
- 2012-02-27
- Rick Smith
Вы можете просто добавить еще одно действие и обратный вызов для wp_footerYou can just add another action and callback for wp_footer- 0
- 2012-02-27
- Brian Fegter
@BrianFegter,хорошо,ты предлагаешь поместить все это в нижний колонтитул?Как гугл-муравей.инструменты для веб-мастеров и т. д.?Не уверен,что лучше всего ....@BrianFegter ok, Do you suggest putting all of this stuff in the footer? Like the google ant. webmaster tools, etc...? Not sure what the best practice is....- 0
- 2012-02-27
- Rick Smith
@RickSmith Это не моя зарплата.смешно@RickSmith That's out of my pay grade. lol- 0
- 2012-02-27
- Brian Fegter
@BrianFegter Ха,ха .. спасибо!:) Вы создаете сайты на wordpress?@BrianFegter Ha,ha..thanks! :) Do you build wordpress sites?- 0
- 2012-02-27
- Rick Smith
@BrianFegter Хорошо,теперь я пытаюсь добавить в этот плагин какой-нибудьjava-скрипт. Как я могу добавить к немуjava-скрипт в приведенном выше примере?@BrianFegter Ok, so now I'm trying to add some java script to that plug in. Going on your above example, how do I add java script to it?- 0
- 2012-02-27
- Rick Smith
Пожалуйста,посмотрите мое последнее изменение.:)Please see my latest edit. :)- 0
- 2012-02-27
- Brian Fegter
@BrianFegter Спасибо,что нашли время помочь мне с этим.Вот бункер для пасты,думаю,все еще что-то не так делаю.:) http://pastebin.com/iT0bJjGE@BrianFegter Thanks for taking the time to help me with this. Here is a paste bin, I think I'm still doing something wrong. :) http://pastebin.com/iT0bJjGE- 1
- 2012-02-27
- Rick Smith
давайте [продолжим обсуждение в чате] (http://chat.stackexchange.com/rooms/2630/discussion-between-brian-fegter-and-rick-smith)let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/2630/discussion-between-brian-fegter-and-rick-smith)- 1
- 2012-02-27
- Brian Fegter
- 2012-02-27
Чтобы изменить заголовок в дочерней теме,скопируйте header.php из родительской темы в дочернюю тему,а затем измените его.WordPress увидит,что у вас есть header.php в дочерней теме,и будет использовать его вместо родительской темы header.php
Любые файлы шаблонов,которые вы добавляете в свою дочернюю тему,будут иметь приоритет над тем же файлом в родительской теме при вызове WordPress.
Все,что входит в тег,должно выполняться с использованием чего-то вроде функции в ответе Брайана.Если это тема для конкретной темы,вы можете поместить ее в файл с именемfunctions.php в папке вашей темы без каких-либо дополнительных действий.
To modify the header in a child theme, copy the header.php from the parent theme into the child theme and then modify it. WordPress will see that you have a header.php in your child theme and use that instead of the parent theme header.php
Any template files you put in your child theme will take priority over the same file in the parent theme when called by WordPress.
Anything that goes in the tag should be done using something such as the function in Brians answer. If it's theme specific, you can put it in a file called functions.php in your theme folder without any extra steps.
-
Том,спасибо.Итак,если мне нужно установить 5 разных фрагментов кода в header.php,могу ли я просто создать один плагин и установить его?Нужно ли мне копировать файл header.php в мою дочернюю тему?Tom, thanks. So if I need to install 5 different snips of code in the header.php, could I just make one plugin and install that? Would I still need to copy the header.php file into my child theme?
- 0
- 2012-02-27
- Rick Smith
-
Да нет смысла делать 5 плагиновYes there is no reason to make 5 plugins
- 0
- 2012-02-27
- Tom J Nowell
-
@RickSmith Если вы абстрагируетесь от плагина,нет причин копировать header.php.:)@RickSmith If you are abstracting to a plugin, there's no reason to copy over header.php. :)
- 0
- 2012-02-27
- Brian Fegter
-
Проблема с этим решением заключается в том,что при обновлении темы вы упускаете исправления в header.php,сделанные автором.The problem with this solution is that when the theme is updated, you will miss out on fixes in header.php made by the author.
- 2
- 2016-02-24
- Knocks X
-
переопределяет ли WordPress весь файл или просто добавляет новый контент в родительский файл?does WordPress override the whole file, or is it just appending new content to the parent file?
- 0
- 2020-05-31
- Ooker
- 2014-08-13
Спасибо Брайану Фегтеру . Если этот ответ помогает,оцените ответ Брайана прямо здесь,выше.
Это полнофункциональный пример того,как добавлять вещи в «заголовок» с помощью собственного плагина. В этом случае я добавляю свойства Facebook Open Graph для кнопок «Поделиться» и «Нравится».
Просто создайте файл PHP с именем,указанным в "Сценарии плагина" в начале примера кода,поместите его в папку с тем же именем без расширения,очевидно,и скопируйте эту папку в место назначения "/wp -content/plugins ».
Затем в «Wordpress» обновите «Плагины»,и вы увидите,что ваш новый плагин установлен. Просто активируйте его,и ваши страницы начнут содержать метаданные Open Graph Facebook и Twitter.
ОЧЕНЬ ВАЖНО: файл PHP должен быть закодирован в UTF-8 без спецификации и не должен содержать никаких символов в конце. Это необходимо обеспечить.
<?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: 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/) 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() ." ‹ ". 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 } ?>
Всем,кому интересна функциональность плагина.
-
Заголовок представляет собой объединение имени текущей страницы. и название сайта.
-
Если существует настраиваемое поле под названием «метаописание»,плагин пытается взять описание из этого поля. В противном случае возьмите описание из отрывка.
-
В качестве изображения плагин пытается использовать миниатюру избранного изображение на странице.
Thanks to Brian Fegter. If this answer helps, please rate for Brian's answer right here above.
This is a fully functional example of how to add things to the "header" by its own plugin. In this case, I am adding the properties of Facebook Open Graph for the Share and Like buttons.
Just create a PHP file with the name specified in "Plugin Script" at the beginning of the sample code, place it in a folder with the same name without the extension, obviously, and copy this folder to the destination "/ wp-content / plugins".
Then within "Wordpress", refresh "Plugins" and you'll see your new plugin installed. Just Activate it, and your pages will begin to contain the metadata of Open Graph Facebook and Twitter.
VERY IMPORTANT: The PHP file must be encoded in UTF-8 without BOM, and should have absolutely no character at the end. Must ensure this.
<?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: 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/) 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() ." ‹ ". 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 } ?>
Anyone who is interested in the functionality of the plugin.
The title will be the concatenation of the name of the current page and the site name.
If a custom field called "metadescription" exists, the plugin tries to take the description from this field. Otherwise, take the description from the excerpt.
As the image, the plugin tries to use the thumbnail of the featured image on the page.
Я создаю дочернюю тему впервые,и у меня возникло несколько вопросов по поводу кода,добавленного в заголовок.
В не дочерней теме есть определенный код,который я добавляю в свой файл header.php,такой как аналитика Google,инструменты Google для веб-мастеров,объявления о покупке и продаже,открытый график Facebook и т. д.
Как это сделать в дочерней теме?Вы создаете файл header.php в своей дочерней теме?Если да,то как это делается?Это то же самое,что и @import,который я использовал в CSS?
Спасибо.