VovkDesign

Блог Александры и Владимира Вовк

RSS лента
wp-puzzle

Почему не стоит редактировать functions.php и чем его заменить

Практически каждый, кто ведет блог на WordPress и самостоятельно занимается его обслуживанием, знает о существовании волшебного файла functions.php. Часто его применяют абсолютно не по назначению, что может привести к существенным проблемам. Давайте вместе более детально разберемся с этим вопросом.

Уверяю, прочитав эту статью, Вы измените свое отношение к плагинам и перестанете пополнять ваш functions.php очередным сниппетом кода.

редактор файла function.php

Плагины и functions.php

Многие владельцы сайтов на WordPress твердо убеждены, что плагины непременно будут нагружать и тормозить блог. А если просто добавить код в functions.php, то это никак не повлияет на нагрузку. Увы, это не совсем так…

Дело в том, что нагрузку вызывает не конкретно плагин, а его неверно написанный код, который, легко может попасть и в functions.php из очередного руководства.

Давайте посмотрим в чем главные отличия плагина и functions.php.

Плагины Файл functions.php
Предназначены для расширения функционала сайта Предназначен для обслуживания конкретной темы и ее тонкой настройки (размер миниатюр, локализация темы и пр.)
«Территория плагина» — все, что касается контента:

  • фильтры WordPress (например, wp_head для добавления/удаления meta тегов в <head>)
  • шоткоды add_shortcode()
  • социальные кнопки
  • код Метрики, Analytisc и других подобных
  • SEO инструменты
  • пользовательские записи и таксономии (register_post_type() и register_taxonomy())
«Территория темы» — все, что непосредственно касается оформления сайта:

  • настройки темы (меню registern_nav_menus(), сайдбары register_sidebar(), виджеты и пр.)
  • настройка длины анонса, текста ссылки «Читать далее» и т.п.
  • любые объявления с помощью add_theme_support()
  • пользовательский CSS
Легко активируются и переносятся на другой блог Привязан к определенной теме WordPress и все, что туда будет добавлено перестанет работать при смене активной темы. Переносить этот функционал придется вручную каждый раз при смене шаблона
При наличии критических ошибок не активируется или отключается Ошибки показываются прямо на сайте или вовсе загружается пустая страница
Если добавить код в плагин и в functions.php активной темы — он выполнится в обоих случаях с одинаковой скоростью. Единственное различие — код плагина выполнится немного раньше, а это говорит исключительно об отличии в порядке запуска.
Принципиальное отличие плагина от файла functions.php — в назначении и порядке выполнения.

Также необоснованно мнение, что код в functions.php выполнится быстрее, чем в плагине.  Один и тот-же код в плагине и в functions.php выполнится с одинаковой скоростью и нагрузкой.

Очень часто проблемы c высокой нагрузкой возникают из-за дополнительного функционала плагинов, а скорость загрузки сайта страдает от подключения скриптами своих стилей, скриптов и другого контента. Поэтому важного уделить внимание выбору плагина, дабы избежать проблем в будущем.

Если Вы обычный блоггер и далеки от веб-разработки, то при выборе плагина обязательно обращайте внимание на отзывы в репозитории WordPress и на блогах авторов или веб-разработчиков.

Если все еще остались сомнения — сделайте чашечку кофе и обязательно прочтите статью Константина Ковшенина на WP Magazine — «Вся правда о functions.php». В первой части просто и доступно рассказывается почему не стоит верить в мифы о functions.php.

к оглавлению ↑

Плагин как альтернатива файлу functions.php

Все дополнения, которые Вы вносите в файлы шаблона (скрипты, счетчики, функции) могут быть утеряны при смене активной темы или применении обновлений для нее. Чтобы избежать этого и не создавать хаос в functions.php, предлагаю Вам воспользоваться своим личным плагином.

Давайте создадим свой плагин — альтернативу файлу functions.php. Не стоит пугаться, он будет выглядеть один в один как любимый functions.php 🙂 . Все, что потребуется — просто добавить пустой плагин на свой сайт. И затем в него можно вставлять необходимый код, как раньше делали это c functions.php.

Прежде всего нам нужно создать на компьютере файл с названием functionsphp.php и добавить в него следующий код:

<?php
/* ====================================
 * Plugin Name: Functions.PHP
 * Description: Мой новый functions.php
 * Version: 1.0
 * ==================================== */

function functionsphp_head_info(){
 echo "\n<!-- Плагин Functions.PHP активен -->\n";
}
add_action('wp_head', 'functionsphp_head_info');

Первая часть плагина — это комментарий, который предоставляет WordPress служебную информацию о плагине — имя, описание и версию. Эти данные удалять нельзя.

Вторая часть — это функция, выводящая html-комментарий <!-- Плагин Functions.PHP активен --> и хук-событие, запускающее выполнение нашей функции в секции <head> сайта.

Плагин можно установить, загрузив созданный файл на сайт через FTP в директорию /wp-content/plugins/. А для установки через админпанель, нужно запаковать этот файл в .zip архив или просто скачать уже подготовленный к установке архив с плагином Functions.PHP:

Материал доступен только подписчикам!

Разблокировать

Если Вы подписаны на обновления блога по почте, введите код доступа, присланный в последнем письме. Чтобы получить код доступа, подпишитесь на обновления блога.

к оглавлению ↑

Как установить плагин

Для установки плагина через админ панель, заходим в Консоли в меню Плагины -> Добавить новый и нажимаем кнопку Загрузить плагин.

как загрузить плагин

В окне загрузки указываем путь к zip-архиву плагина, нажав кнопку Выбрать файл и затем начинаем установку кнопкой Установить.

установка плагина wordpress

По завершению загрузки и установки плагина, нам предложат активировать его или перейти на страницу плагинов. Я активировала плагин.

установка завершена

Попадаем на страницу со списком всех плагинов и видим, что установка и активация прошли успешно.

Для демонстрации работы плагин добавляет html комментарий в секцию <head> сайта. Можно проверить наличие этого комментария. Для этого переходим на сайт, нажимаем правой кнопкой мыши и выбираем меню Посмотреть исходный код. В этом окне нажимаем Crtl + F, чтобы активировать окно поиска на странице, и вводим название плагина «Functions.PHP». Если плагин работает, то мы найдем вот такую строку в коде:

плагин functionphp работает

Если плагин активирован и такой строки в исходном коде нету, проверьте наличие кеширующих плагинов на сайте и очистите кеш при их наличии.

к оглавлению ↑

Как редактировать плагин

На время редактирования плагинов, их лучше деактивировать. Если редактировать активный плагин, то при обнаружении конфликта или ошибки WordPress автоматически отключит его. А это — еще один огромный плюс в пользу плагина вместо functions.php, так как в случае последнего получим неработающий сайт и необходимость заходить и исправлять ошибку через FTP.

Чтобы отредактировать плагин, заходим в Консоли в меню Плагины -> Установленные и под названием нашего плагина нажимаем ссылку Редактировать.

как редактировать плагин

Попадаем на страницу, которая внешне ничем не отличается от страницы редактирования файла funtions.php. Теперь сюда мы можем вставлять свой функционал (после всего текста), который обычно советуют добавлять в functions.php.

окно редактирования плагина

к оглавлению ↑

Что точно стоит добавить в свой плагин Functions.PHP

Далее я приведу несколько примеров, которые помогут добавить код в <head> или перед тегом </body>, а также просто дополнительный функционал на сайт.

к оглавлению ↑

Добавление кода в тег <head> вроде Google Analytics

Чтобы подключить скрипт или вывести информацию внутри тега <head>, добавьте этот код с примером подключения аналитики Google. Все, что написано между символами <<<EOT и EOT — строка и она будет выведена на сайте, используйте html.

function functionsphp_googleanalytic (){
    echo <<<EOT

<script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-01010101-1', 'vashsite.com');
 ga('send', 'pageview');

</script>

EOT;
}
add_action('wp_head', 'functionsphp_googleanalytic');
к оглавлению ↑

Добавления кода перед закрывающим тегом </body>

Эта функция подойдет, если необходимо добавить код в подвал сайта или там-же подключить скрипты и т.п.

function functionsphp_footertext (){
    echo <<<EOT

<!-- мой комментарий в подвале перед </body> -->

<!-- а ниже - подключение скрипта -->
<script type='text/javascript' src='http://avovkdesign.com/wp-content/js/xfiles.js'></script>

EOT;
}
add_action('wp_footer', 'functionsphp_footertext');
к оглавлению ↑

Собственные шоткоды

Если имеется пара-тройка шоткодов, которыми Вы часто пользуетесь, можно добавить их в этот плагин. Если их много — стоит подумать о создании аналогичного плагина, содержащего только шоткоды.

В примере ниже добавляется shortcode info, текст внутри которого оборачивается в тег div с классом info.

function functionsphp_shortcode_info ( $atts , $content = null ) {
    return '<div class="info">'. do_shortcode( $content ) .'</div>';
}
add_shortcode( 'info', 'functionsphp_shortcode_info' );
к оглавлению ↑

Теперь всегда используем свой плагин Functions.PHP

Вы все еще в замешательстве о чем речь? Тогда запомните, что добавлять свой код в файлы шаблона — это плохо, не практично и чревато последствиями (можете удалить что-то лишнее, поставить неработающий код или допустить ошибку).

Имея на блоге специальный плагин для своего кода, Вы сможете легко сменить шаблон без потери важных функций и без необходимости повторно настраивать счетчики, скрипты, рекламу и .т.д. Да и любые ошибки при добавлении нового кода не будут критичны для работы сайта — плагин просто выдаст сообщение о возникновении ошибки и не активируется (или отключится, если был активен в момент редактирования).

Все что нужно — установить плагин и разместить в нем свой код. И дальше любые куски кода с пометкой «вставить в functions.php» добавляем в наш волшебный плагин.

Комментарии всего: 173

  • Александра, то есть, можно будет добавить коды в плагин, а не в файл functions. А как это влияет на скорость загрузки с плагином и без него?
    У меня в файле functions есть коды для удаления старой микроразметки, для микроразметки изображений, топ комментаторов, удаление replytocom в комментариях, шорткод для рекламы в Google Adsense.

    • Да, именно — в плагин сможете добавить код, который раньше размещали в файле function.php. На скорость загрузки это не повлияет никак, и это самое главное. Во-первых, как я и писала в статье — один и тот-же код будет выполняться с одинаковой скоростью не зависимо места размещения (в плагине или в function.php). Во-вторых, список всех активных плагинов WordPress загружает получением одной настройки (т.е. не важно сколько их активно, запрос один во время получения всех опций сайта).
      Относительно списка — удаление replytocom и шоткод — будут работать независимо от активной темы. А вот микроразметка — с активной темой скорее всего будут работать, а с другими — зависит от корректности реализации самой функции. Что касается топ комментаторов — функцию определения и подготовки html кода к выводу нужно вынести в плагин, а вот ее вызов (там, где собственно будет выводиться топ) нужно будет добавлять в каждой теме.

      • Александра, у меня Google Analitics находится в файле header. Код начинается со стрелками Google Analitics, и заканчивается со стрелками End Google Analytics. Вот эти строчки вообще нужно удалить, или их можно вставить в плагин (правильная валидация кода)?
        Код счетчика нужно вставить между <<<EOT и EOT, а остальной код оставить как у вас в статье? У меня на сайте это файл header, а не functions.
        Для каждого кода нужно делать свою конструкцию? Я имею ввиду, верхний и нижний код, который обрамляет вставляемый код, как у вас на примерах.
        А счетчики с подвала, тоже можно будет вставить в этот плагин?

        • Строчки со стрелками <-- и --> — это HTML-комментарий, удалять его не обязательно, можно перенести в плагин.
          Все верно — нужно вставить код аналитики между <<<EOT и EOT, а остальной код оставить как в примере в статье. Если нужно еще какой-то код добавить в тег </head> — его можно вставлять в эту-же конструкцию, до или после кода аналитики.

          Счетчики с подвала можно вставить в этот плагин (уже вот этой функцией), но при этом нужно обратить внимание, что выведутся они там, где в footer.php указана строчка с текстом <?php wp_footer(); ?> (чаще всего после всей разметки блога, поэтому могут вывестись ниже подвала с копирайтами).
          Со счетчиками можно проделать другой финт. В плагин добавить свою функцию с кодами всех счетчиков:

          function functionphp_footercounters (){
              echo <<<EOT
              
              <!-- сюда добавить коды всех счетчиков -->
          
          EOT;
          }
          

          А затем в нужном месте footer.php вызвать ее, добавив такую конструкцию:

          <?php if ( function_exists('functionphp_footercounters') ) : 
              functionphp_footercounters(); 
          endif; ?>
          • Попробовал на тестовом сайте. Работают такие коды: удаление разметки hatom, микроразметка изображений, фильтр для плагина AIOSP, удаление replytocom в комментариях.
            Счетчик GA не проверял, так как он стоит на основном сайте, и проверить его работу на поддомене не представляется возможным.
            Топ комментаторов проверить не смог, так как он почему-то вообще не работает на тестовом сайте, даже в файле functions. Темы одинаковые, копировал код с основного сайта, я пока в тупике.
            Счетчики из подвала сначала вставлял в код из статьи. Они отображались в верхнем левом углу сайта, вместо нижнего правого угла. Потом попробовал код из вашего комментария, счетчики вообще не отображались.
            Наверное, удалять файлы с подвала в плагин необязательно? Желательно разгрузить файл functions. А на скорость загрузки сайта, на количество запросов, эти манипуляции с кодами как-то влияют?
            Еще вставлял скрип для открытия ссылок с комментаторов в новом окне (он находится в заголовке), но код не заработал ссылки на сайты комментаторов открывались в этом же окне. Я вставлял скрипт в код вместо счетчика GA.

          • Василий, спасибо за детальный отчет по результатам!
            Со счетчиком гугл — все будет работать, здесь можно не сомневаться. Нам главное вывести его в блоке <head>, что и делает плагин (с помощью фильтра wp_head).

            С топом комментаторов на тестовом может быть такая ситуация: топ строится за последние 30 дней или за текущий месяц (с 1-ого по 30/31 числа), а комментариев за эти даты просто нету.

            По счетчикам — кроме того, что добавить их в функцию в плагине (из моего комментария выше), не забыли добавить вызов этой функции в footer.php на бывшем месте счетчиков?

            Василий, удалять файлы вообще никакие не нужно. Если речь о коде в подвале — то, естественно, это не обязательная мера, скорее рекомендация. Можно счетчики оставить там-же.

            Если говорить о скорости загрузки и количестве запросов — абсолютно никакой разницы нет, где находится код — в function.php или в плагине. Важно только качество кода.

            Скрипт для ссылок комментаторов можно попробовать вставить не в <head>, а в самый низ сайта до тега </body> (сюда желательно добавлять подключение основной массы скриптов в целях увеличения скорости загрузки).

          • С топ комментаторов, да, у меня стояли на стройки на «месяц», исправил на «все время». Все равно он не отображается ни так, ни так. Мистика какая-то.
            В футер вставлял код, все равно счетчики не отображаются. Сейчас, даже после удаления этого кода из футера, счетчики перестали появляться даже сверху. Это вообще непонятно, почему так стало.
            А вот еще код подключения библиотеки jquery, его можно поставить в плагин? Гугловский Page Speed рекомендует убрать такие коды из шапки.

          • Василий, по комментаторам — странно, конечно. Но тут уже без детального осмотра кода не обойтись. Со счетчиками — попробую на своем другом блоге и отпишусь, должны отображаться.
            А вот подключение jQuery лучше оставить для шаблона. И в шапке желательно оставить только подключение этой библиотеки, потому как при наличии скриптов с асинхронной загрузкой и подключением jQuery в подвале можно нарваться на ошибки, когда какой-то скрипт уже должен выполняться, а библиотека еще не загрузилась.
            Page Speed — это все-таки только рекомендации, и нужно действовать по ситуации. Существуют и другие способы подключения библиотеки, более быстрые. Но я пока пользуюсь таким вариантом (jquery в head, остальные — в подвале после всей структуры сайта)

          • Я пробовал методом тыка вставлять коды по разному. Времени потерял, конечно много, но получил некоторый опыт, а это полезно. 🙂
            Есть у меня код для сокрытия ссылок с комментаторов. Там нужно вставить три кода. jquery остается на месте, а два скрипта нужно вставить в шапку и подвал. После многочисленных попыток, мне кажется, что для этих скриптов нужно некое обрамление, чтобы можно было вставлять скрипты перед head и body (с подвала может даже убирать не нужно?). При вставке этих скриптов в файлы темы, имя комментатора ничем не отличается от того, что было раньше, ссылки открываются в новом окне. При добавлении в плагин этих скриптов, имя комментатора становится неактивным, перехода на сайт не будет.

          • Код для замены ссылок комментаторов у Вас весьма непрост 🙂 . Заменяет только ссылку в имени автора или и в самом комментарии? Если только в имени — попробуйте наш вариант, работает на PHP (при создании страницы WordPress-ом).
            Сниппеты (куски кода), которые я привела в статье, подходят для вставки любого html-кода или скриптов в блоке head или перед закрывающим body. Т.е. в одну функцию можно вставить не только, например, код аналитики, но и скрипт для сокрытия ссылок комментаторов.

          • Александра, ваши варианты закрытия ссылок с имени комментатора, вообще не работают на моем сайте. Они ничего не добавляют к ссылкам. Я вставлял коды в файлы темы, а не в плагин.

          • Василий, перед установкой наших кодов нужно временно отключить те, что были у Вас ранее. И очень внимательно устанавливать связку скрипт сокрытия ссылок + функция подмены ссылки комментатора. Попробуйте поставить какой-то один вариант скрипта и функции, отключите скрипты, что были ранее и бросьте мне адрес тестового сайта в теме по комментариям. Или напишите на почту

          • Александра, мой код скрытия сайтов комментаторов заработал. Схема работы такая: подключается библиотека jquery в шапке, в подвале устанавливается код для обработки запроса, а в плагин functions вставляется функция для скрытия ссылок.
            Таким образом, из файла functions убирается код, что и требовалось.
            Из того, что есть у меня в файле functions, что-то непонятное пока происходит с топ комментаторов, и еще я не могу проверить работу шорт-кода AdSense.
            С шапки еще бы убрать Google Analitics, не знаю, будет работать или нет, то тогда, все коды будут убраны. Останется подвал, но он загружается в последнюю очередь, поэтому там коды останутся.

          • Василий, все будет работать — и код сокрытия ссылок, и гугл аналитика и любые шоткоды. Главное — внимательно переносить коды и при этом контролировать изменения в исходном коде страницы.

          • Шоткод AdSense обязательно нужно выносить. И Google Analitycs также

  • Классное решение. Как раз собираюсь менять шаблон. Только вот как подумаю сколько заново делать, так в дрожь бросает. А с вашим решением смена должна пройти гладко. Обязательно опробую. Спасибо.

    • Да, настоящая проблема смена шаблона на блоге, на котором все счетчики и пр. добавлялись очень давно — надо еще вспомнить что и где 🙂

      • Вот и я про то же, нужно всё вспомнит, где что дорабатывал. Сегодня уже кое что перенес в плагин. Работает. Класс!

  • Александра, один вопрос. В примере есть открытие PHP, но нет его закрытия. Возможно пропустили. Или так задумано? 😉

    • Максим, это сделано намеренно. PHP допускает отсутствие закрывающего тега в конце файла. А вот если вдруг после закрытого тега появится пробел или закрытая строчка — быть беде 😉

      • А я всегда стараюсь проверять код, на лишние знаки. Но это дополнение будет весьма к стати всем читателям.

  • Спасибо, пробежалась, буду позже разбираться!

  • Здравствуйте! Потрясающая статья! У меня вот только возник вопрос.
    Сначала надо скачать файл с function.php с вашего блога, потом установить его на блог, а затем можно будет просто вырезать все коды, которые были добавлены в сам function.php и вставить их в одноименный плагин. И всё будет работать. Так?
    А что за пометка: «вставить в function.php», для чего она нужна? Объясните пожалуйста

    • Никита, да — нужно скачать плагин , ссылка на который есть в статье, и установить его на блог. А затем код, который добавляете обычно в function.php темы, можно перенести в плагин.
      Говоря о пометке «вставить в function.php», я имела ввиду разные уроки в сети, где предлагают добавить код в файл с функциями темы (function.php)

      • Аааа! Теперь понял! Это такая крутая статья! офигеть! А коды, которые уже установлены в function.php, если перенести. то всё равно будут работать? Или нет?

        • Никита, да, конечно будут (которые вы сами добавляли, а не настройки темы)

          • Обалденно! Спасибо вам огромное! Сейчас же приступлю к выполнению! Замечательная статья! Т.е. с лёгкостью можно переносить все коды, которые я сам туда вносил независимо от того в начале или в конце они стояли? Извините за глупые вопросы.

          • Никита, да. Переносить можно независимо от места расположения. Единственное, что посоветую во избежание проблем — переносите по частям (одну функцию или часть кода, которую вставляли для определенных целей). И каждый раз проверяйте работоспособность. Потому что, если код относится к настройкам темы — может не сработать.

          • Всё понял! Спасибо вам огромное! очень признателен за ответы!

  • Спасибо большое! Ваша карта сайта понравилась, ваша идея с плагином понравилась еще больше! Очень рада, что подписана на вас.

    • Александра, эта идея не нова. Да и не идея вовсе, а скорее правильный подход к программированию для WordPress. Само понятие плагина вордпресс — это и есть нужные нам сниппеты (куски) кода.
      Ко мне часто обращаются с проблемой очень медленной загрузки сайта или высокой нагрузки на хостинг. И в большинстве случаев, истоком проблемы оказывается именно самостоятельное изменение файлов темы. А если все свои правки хранить в одном-двух плагинах, то и диагностировать проблему легко — отключили и посмотрели как все работает.

      • С праздниками вас! Пусть все задуманное сбывается!

        Сегодня наконец-то добралась до вашего плагина, я установила такую тему, в которой не умею редактировать function, потому многие кусочки кода пришлось забыть. Спасибо за решение еще раз.

        Есть еще одна долгоиграющая проблема — рекомендуют организовать изображения в css спрайты и убрать подгружаемый код плагинов в конец страницы. Перепробовала массу вариантов, в основном со сторонними плагинами и всякими хаками умельцев, доходило до полного краха на сайте, теперь прости смирилась, что мне это не по зубам. Буду благодарна, если когда-нибудь вы выдадите очередной супер полезный функционал по этим вопросам.

        • Александра, спасибо! Вас тоже с праздниками, счастья, успехов и творческого вдохновения!
          Относительно css-спрайтов — самостоятельно решить этот вопрос будет не легко, необходимо хоть немного разбираться в CSS-верстке.
          Скрипты и стили, подгружаемые плагинами — отдельный и весьма обширный вопрос. Здесь можно предлагать варианты решения исключительно по конкретному плагину, вроде Contact Form 7 или WP PageNavi, потому как универсального решения нету.

  • Александра, Вы просто гений! Я сам никакого кода написать не смогу, но понимаю о чем идет речь. Ведь все эти счетчики, фавиконки и прочие технические настройки, которые появляются постепенно в виде доп. строчек в function теперь я могу как-бы «взять с собой» и поставить где угодно! Да и безопасность повышается. Супер!

    • Дима, да — все именно так. В принципе, для этого и созданы плагины 😉 Взять те-же шоткоды — их место именно в плагинах.

  • Привет! Интересная затея!

    Раньше часто приходилось все восстанавливать: смена шаблона или просто неудачная вставка кода.

    А теперь когда стоит микроразметка (и не только), за которую я отдал деньги, то и желание химичить пропало… Да и опыта уже побольше!

    • Вот с неудачной вставкой кода в плагин вообще идеально — он просто выдаст сообщение и не включится.
      А «химичить» можно, если есть желание. Но лучше делать это на копии сайта и на оригинал добавлять только проверенный функционал 🙂

      • Иногда и проверенный функционал может дать сбой на оригинале!

        Да и так химичу, просто уже более менее знаю что и как! =)

  • Спасибо,Александра, конечно, еще придется по разбираться, но в основном все понятно изложено.

  • Александра, спасибо за ответы. Я вам тут надоедаю вопросами потому что думаю обновить свою тему. Автор убрал там старую микроразметку, а самое главное, в установленной на моем сайте теме есть какие глюки. Перестал работать один плагин, который я запускал время от времени. Другой плагин кэширования, когда я его установил на сайт по совету хостинга, проработал неделю и выдал белый экран. Не работают похожие записи (на поддомене все работает). Это проделки плагина W3 Total Super Cashe. Я решил его попробовать, но улучшения не увидел, вернулся на старый плагин, а в шаблоне начались эти проблемы.
    И хочется обновиться и боязно в тоже время, вдруг что-то не заработает.
    P.S. Ваш плагин карты сайта работает отлично, спасибо.

    • Василий, абсолютно не надоедаете, а наоборот есть интересное продолжение статьи — дополнительные нюансы и решения в комментариях всегда самые сладкие 🙂
      С плагинами кеширования надо быть осторожнее. Я отдаю предпочтение WP Super Cache или Hyper Cache, а безусловный фаворит — MaxCache, выдерживает весьма значительную посещаемость.
      С обновлением темы, конечно, стоит быть весьма осторожным. Лучше всего сделать полный бэкап (и файлов и баз данных), чтобы при необходимости можно было восстановиться полностью или частично.
      А по плагину тотал супер кеш — его желательно полностью удалить и только потом ставить новый плагин кеширования

  • Отличная статья! Спасибо за полезности =)

  • Александра и Владимир, поделюсь итогами своих экспериментов. Я начал экспериментировать на поддомене, а завершил уже на своем рабочем сайте.
    Мне удалось добавить в плагин все коды из файла functions. Сейчас в файлах functions и header нет постороннего кода. В header только добавлена одна строчка для jquery.
    Коды в плагин я добавлял, просто вставляя их в файл плагина, только код Гугл Аналитикс добавил через приведенную в статье конструкцию. Я добавил туда такие коды: удаление разметки hatom, фильтр для плагина AIOSP, код для микроразметки изображений, удаление replytocom в комментариях, скрытие ссылок комментаторов, шорткод для рекламы в Google Adsense, топ комментаторов, код Гугл Аналитикс. Все хорошо работает на основном сайте.
    При проверке скорости загрузки сайта разницы не заметил. Единственное, что плагин functions стал одним из самых «тяжелых» на моем сайте (после добавления кода топ комментаторов).
    Теперь можно было обновить тему, но почему-то топ комментаторов не работает на уже обновленной теме на поддомене. Это пока меня останавливает от обновления.

    • Василий, спасибо за подробный отчет. Как видите, по скорости загрузки действительно нету никакой разницы. И не должно быть. Также и по нагрузке — она идентична, код ведь один и тот-же (в P3 думаю сможете отследить перемены по скорости загрузки темы и плагинов до и после использования нашего специального плагина).
      Василий, а каким кодом топ-комментаторов Вы пользуетесь? Уж очень смущает, что он так и не заработал у Вас на тестовом даже после смены настроек. Бросьте ссылку откуда брали код ,возможно подскажу что-нибудь

      • Александра, топ комментаторов заработал. Я просто забыл еще об одном маленьком коде, который к нему имеет отношение. Сейчас топ комментаторов на моем сайте отображается с плагина functions.

        • А в плагине так и не «запустили» или не пробовали?

          • Топ комментаторов в плагине и работает. Все получилось.

          • Василий, отлично! Спасибо, что написали

  • Блииииииин! Почему-то никак не получается запустить плагни. Выдаёт ошибки. Всё сделал по инструкции вроде бы. Пишет:
    Fatal error: Cannot redeclare redirect_after_first_comment() (previously declared in /home/httpd/vhosts/snow-motion.ru/httpdocs/wp-content/themes/xmarkup/functions.php:531) in /home/httpd/vhosts/snow-motion.ru/httpdocs/wp-content/plugins/function.php on line 26

    • Никита, прежде чем запускать плагин с перемещенными функциями, эти же функции нужно удалить из function.php темы. А сейчас плагин не активируется, потому что делает попытку объявить функцию redirect_after_first_comment(), которая уже имеется в function.php темы.
      Еще один безопасный способ добавления функций — проверка на ее существование. Делается вот так:

      if ( ! function_exists( 'my_function_name' ) ) :
          function my_function_name($tdate = '') {
              // код функции
          }
      }
      • Копировал все функции в новый плагин, сохранил старый function.php, опять та же беда.

        Fatal error: Cannot redeclare my_meta_noindex() (previously declared in /home/httpd/vhosts/snow-motion.ru/httpdocs/wp-content/themes/xmarkup/functions.php:11) in /home/httpd/vhosts/snow-motion.ru/httpdocs/wp-content/plugins/functionphp/functionphp.php on line 18

        Никак не пойму, в чём проблема.

        • Никита, проблема у Вас снова та-же. Только уже с другой функцией, на этот раз виновник — my_meta_noindex(). Ищите ее в файле function.php темы — она все еще там

          • Всё сделал! Спасибо вам большое!!!

  • Александра, очень приятно осознавать, что среди красивых девушек бывают умные! Так держать! )

  • Приветствую! Тоже задавался вопросом подобным, как не используя файл functuon вставлять подобные коды. Даже хотел написать плагин, но потом подумал, что не один я такой умный и полез в репозиторий. В итоге нашел отличный плагин My Custom Functions.
    Что-то наподобие вашего, но в фалы плагина лезть не надо, плагин создает отдельное окно для вставки кода. Причем, что хорошо, есть проверка на ошибки т если в коде присутствуют синтаксические ошибки, то плагин код просто не запустит, но сайт при этом будет работать а не вываливаться в белый экран

    • Артем, достойная альтернатива. Правда для меня сомнительна проверка на ошибки именно плагином — лишняя работа. Ведь сам WordPress при обнаружении синтаксической ошибки в файле активного плагина просто отключит его и уведомит, что произошел сбой и плагин был деактивирован. Поэтому — безопасно.
      Ну а лезть в код — да, немного необычно для новичков. Но ведь то же самое все делают с function.php без лишних колебаний ))) А редактировать даже активный плагин куда безопаснее, чем файл темы — белый экран не появится точно.

      • А ну да, согласен, если в плагине ошибки то Вп просто не запускает его, чегойто я подзабыл))) Я особо с этим плгинов не ковырялся, видомо он использует стандартный функционал ВП, просто сообщения выводит другие и без указания конкретной ошибки, что не всегда удобно

        • Артем, если что-то будет вставлено не так, то плагин сразу отключится. У меня он часто отключался, когда я пробовал вставить туда коды. Чаще всего это происходило, когда я забывал удалить такой же код из файла functions темы.
          А так все хорошо работает, ты видел работу плагина на моем сайте.

          • Конечно видел, Василий, потому и за интересовался таким способом)))

  • Александра, мне все-таки удалось вставить код счетчиков и остального из файла footer.php в плагин. Для одного скрипта и ссылки использовал конструкцию из статьи, а для счетчиков коды из вашего комментария.
    Теперь в подвале есть только код для вызова функции кода счетчиков.
    Раньше у меня ничего не получалось, потому что в коде для вызова функции есть лишний пробел (первая строка, после functionphp_footercounters). Если пробел убрать, то все начинает работать.

    • Василий, да, с пробелом была ошибка, действительно. В комментарии исправила.
      Отлично что все получилось!

  • Александра, а если вместо этого использовать дочернюю тему? Какое решение будет лучше, в плане скорости загрузки и работы сайта.

    • Василий, можно использовать и дочернюю тему. Файл functions.php выполняется после плагинов, но до functions.php главной темы.
      По скорости работы и загрузки сайта разницы не будет, если дочерняя тема не будет загружать дополнительных файлов.
      Одна и та-же функция выполнится с одинаковой скоростью и нагрузкой не зависимо от файла (плагина или темы), единственная разница во всех случаях — порядок выполнения.
      Ну и что касается вопроса что выбрать — плагин или дочернюю тему, то я бы советовала комплексное решение. Плагин — для php кода (огромное преимущество в безопасном процессе редактирования), дочерняя тема — для изменений во внешнем виде (css) или в структуре html документа.

  • Отличный у вас сайт, за выходные все статьи прочитал, много полезного узнал. А эта статья одна из лучших, сегодня буду всё переделывать на своих сайтах. Здорово если у вас в будущем появится статья про снижение нагрузки на хостинг или по ускорению скорости загрузки сайта =)

    • Cheshir, спасибо! Да, по скорости загрузки планируем еще материал публиковать, так как тема важная.

  • Добрый день Александра.
    Очень понравилось Ваше решение с созданием плагина вместо редактирования файла function.php
    Я создал плагин, установил, он активен все ок.
    Я делаю интернет магазин на Woocommerce.
    В шаблоне все супер, но вот когда например название (title) у товара длиннее чем у других, то он сползает, т.е. когда товары стоят в сетку выделяется жутко.
    Суть задачи у меня состоит в том чтобы обрезать длину отображаемого title товара до определенного количества символов и если вдруг title длиннее, ставить «…»

    Нашел в интернете такое решение

    Сначала в файл functions.php вашего шаблона вставьте следующую функцию:

    function trim_title_chars($count, $after) {  
      $title = get_the_title();  
      if (mb_strlen($title) > $count) $title = mb_substr($title,0,$count);  
      else $after = '';  
      echo $title . $after;  
    }

    Затем в шаблоне поменяйте код, который выводит название поста — — на такой:

    Но вот реализовать это с данным плагином пока не получается

    Кстати у меня тег находится в single.php

    Есть ли необходимость в создании плагина для single.php

    • Затем в шаблоне поменяйте код, который выводит название поста — — на такой:

  • У меня все сработало.
    Помог такой код

    function shortTitle($title) {
      $limit = 18;
      if(strlen($title) > $limit) :
        $title = mb_substr($title, 0, $limit). '...';
      endif;
      return $title;
    }
    add_filter('the_title', 'shortTitle', 10, 1);

    Где $limit = 18; это максимальное число символов
    И где ‘…’ в коде $title = mb_substr($title, 0, $limit). '...'; это символы после сокращения

    СПАСИБО ВАМ ОГРОМЕДНОЕ ЗА ПЛАГИН

  • Правда нашел недостаток этого способа
    Он сокращает отображение title везде и в админ части и в самой карточке товара фронт-офиса
    Нужно решение )))

  • Как сделать так чтобы обрезалось отображение title только во фронт офисе в витрине товаров?

  • Нашел такое решение

    add_filter('the_title', 'korotkyi_zagolovok_zapisi', 10, 2);
     
    function korotkyi_zagolovok_zapisi($zagolovok) {
      if (in_the_loop()) : // Эта строчка нужна, чтобы не получать обрезки вне цикла вывода постов.
        $zagolovok = mb_substr($zagolovok, 0, 25). '...';
      endif;
      return $zagolovok;
    }

    Оно не трогает Титл в админ панели
    Но обрезает его не только на витрине, но и когда заходишь в товар во фронт офисе

    • Ренат, хоть и с опозданием, но отвечаю на Ваш вопрос. Самое первое решение — тоже должно работать с плагином, там скорее всего при ставке в single.php была допущена ошибка.
      Второй вариант с использованием фильтров — более правильный.

  • Последнее решение работает, оно брезает title.
    Но единственный вопрос что обрезает и в каталоге товаров и когда в сам товар заходишь тоже title обрезан.
    Вопрос как сделать чтобы обрезало только в каталоге товаров, например заходишь в катеорию товаров там у товаров title обрезан с многоточием, а заходишь в сам товар title полный не обрезаный?

    • Ренат, этот вопрос весьма узко-направлен и далек от темы статьи.
      Фактически, Вам нужно проверять не только в цикле вывод заглавия, а и еще на какой странице. Например, функция is_single() проверят отображается ли сейчас отдельная запись или другая страница. Она должна сработать в Вашем случае, пробуйте так:

      <code>add_filter('the_title', 'korotkyi_zagolovok_zapisi', 10, 2);
      function korotkyi_zagolovok_zapisi($zagolovok) {
      if (in_the_loop()) : // Эта строчка нужна, чтобы не получать обрезки вне цикла вывода постов.
      $zagolovok = mb_substr($zagolovok, 0, 25). '…';
      endif;
      return $zagolovok;
      }</code>
  • Нашел решение на форуме WordPress.
    Цифра 15 это то, на сколько символов обрезать заголовок, вторая на сколько символов вернуть при входе в товар.
    Благодаря Вашему плагину эксперементы прошли безболезненно, в случае ошибки он просто деактивируется.
    Александра еще раз спасибо за идею.
    Ниже приведу решение возможно кому-то кто владеет интернет магазином оно пригодится.

    add_filter( 'the_title', 'shorten_my_title', 10, 2 );
    
    function shorten_my_title( $title, $id ) {
    if ( is_page() && get_post_type( $id ) === 'product' && strlen( $title ) > 15 ) {
    return substr( $title, 0, 50 ) . '...';
    } else {
    return $title;
    }
    }
    • Ренат, в данном контексте цифра 15 — это проверка длины заголовка (т.е. если в заголовке больше 15 символов, то обрезаем), а в строке ниже 50 — это и есть длина, до которой нужно обрезать заголовок.

  • Наконец, то попробовала данный плагин на одном из блогов, здорово! Все работает. В ближайшие дни и на других блогах перенесу в плагин коды

  • Александра, во-первых — большое человеческое спасибо, объясняете грамотно и доступно. Нашла на вашем блоге ответы на спорные вопросы.
    Еще один вопрос. Мне очень понравилась фишка «как отблагодарить авторов».
    Отблагодарить пока нет возможности, извините:-)
    Подскажите в двух словах, как это можно реализовать.
    На моем сайте с 3 статьями для людей авторы комментов настоятельно рекомендуют установить копилку.
    Заранее спасибо.
    С уважением, Алена

    • Алена, если ну совсем в двух словах, то самый простой способ — установить форму пожертвований от Яндекс Денег. Просто настраиваете все в конструкторе и добавляете код себе на сайт в любое место.

  • Хорошая статья. Чего уж там, сейчас есть даже целые блоги — типа «WordPress без плагинов». Делятся советами ценными из разряда — как превратить сайт на WP не пойми во что. Спасибо вам за ваши плагины — установил оба. Оба нравятся. Давайте больше хороших плагинов ))

    • Dmitry, спасибо! Есть идеи доработки старых и создания новых плагинов, так что обязательно будут новинки.

      • Вот кстати, к доработкам идея небольшая. В плагине — карта сайта очень хотелось бы как-то разделять или выделять категории и подкатегории в облаке наверху. У меня например, немного категорий и внутри них много подкатегорий. В облаке — все в общей в кучке.

        • Dmitry, да — идея отличная, я уже тоже обращала внимание на облако категорий и озадачилась также иерархическим выводом.

  • Александра, здравствуйте. Подскажите, можно ли в этот плагин вставить сторонний скрипт, типа <script type="…. который должен находиться между тегами

    Спасибо.

  • Спасибо, Александра. Единственное, правильно ли я понимаю, что мне надо будет заменить в этой конструкции

    function functionsphp_googleanalytic (){
        echo <<<EOT
    
    <script>мой скрипт</script>
    
    EOT;
    }
    add_action('wp_head', 'functionsphp_googleanalytic');

    googleanalytic на название своего скрипта в начале и в конце кода.

    • Если у Вас будет две таких конструкции — одна с кодом аналитики (как у меня в примере), а вторая — с Вашим скриптом, то нужно будет название functionsphp_googleanalytic заменить на что-то вроде functionsphp_myscript в первой и последней строчке. Или же можно использовать один блок, а скрипты разместить друг под другом между символов <<<EOT и EOT;.
      Если такой блок с кодом будет один — менять не обязательно, это лишь название.

  • Спасибо, Александра. Всё понятно.

  • Как я рад, что набрёл в инете на ваш сайт!
    Большое спасибо за ваши статьи, особенно за эту.
    Сразу же начал экспериментировать с собственными плагинами для function.php и shortcodes.pfp, чтобы без болезненно редактировать исходный шаблон.
    Всё, как вы сказали сделал и установил. Всё работает!
    Смущает только, что при установке моих плагинов для function.php и shortcodes.php в обоих случаях вывелось сообщение:
    Плагин произвёл при активации 3 символов неожиданного вывода. Если вы заметите ошибку «header already sent», проблемы с RSS-лентами или другие неполадки, попробуйте деактивировать или удалить этот плагин.
    Что это за предупреждение? Что-то неправильно перенёс?

    • Сергей, точно сказать в чем проблема я не смогу, т.к. не вижу Ваш код. Где-то выводятся лишние символы или печатается html вне функций.
      Особенность плагина в том, что вывод любого html кода выполняется только с вызовом специальных функций.

      Попробуйте переносить функции по одной и каждый раз активировать плагин — тогда сможете определить, какая часть кода вызывает такое предупреждение. Вот его можно мне в комментарий прислать — попробуем посмотреть причины.
      Также проверьте, чтобы в конце файла не было закрывающего php-тега ?>

      • Александра, я попробовал разные варианты, но указанная мной надпись при активации плагинов (обоих) всё равно появляется. При этом всё работает.
        Отправил Вам свои файлы с кодом и скриншот надписи в почту.
        Посмотрите, пожалуйста.
        Заранее признателен.

        • Причина оказалась в кодировке файла. Сохраняйте файлы в кодировке UTF-8 without BOM

  • Ну вот и у нас хорошая новость. Потратили вечер по теме статьи и не жалеем. Сразу советую всем подписываться, так как подписчикам открывается в статье интересная информация. Для такого уровня «программеров» как я, лучше скачать готовое и установить. Спасибо!
    С помощью плагина Functions.PHP нам с мужем удалось наконец-то поставить на блоге скрипт от копирования. Скрипт был, но вставлять самостоятельно не решались. Плагин действительно отключается, когда что-то сделано неверно.
    Просто СПАСИБО за подробнейшую информацию.

  • Подскажите пожалуйста где поменять код счетчика на wordpress ? Установлен плагин

    • Руслан, нужно найти где именно у Вас добавлен код счетчика. Скорее всего, он находится в файлах темы (Внешний вид -> Редактор) header.php или footer.php. Также (в зависимости от темы), код счетчика может быть добавлен через специальные опции (тогда будет страница настроек темы).
      Установка и активация данного плагина FunctionsPHP только позволит Вам добавлять в него свой код, выполняющий определенные действия. По-умолчанию, он пустой.

      • Спасибо за ответ. Извините я написал не в том посте. Меня интересует отображение ип адресов в яндекс метрики. У меня установлен плагин на сайте, но я не могу найти код счетчика. Ни в Хеадере ни в футоре, нигде его нет. Мне кажется что плагин откуда то удаленно берет код
        Вот данный пост.
        http://avovkdesign.com/otobrazhenie-ip-adresa-v-yandeks-metrike.html

        • Руслан, напишите в комментарияъ к той теме название плагина — возможно, смогу подсказать

  • Так просто , но так полезно. Вы нашли отличное решение для пользователей WordPress. Спасибо вам за плагин.

  • Добрый день!
    Очень ваша помощь. Похоже, что проблема у меня такая же как и у Никиты (выше)
    Нужно всего-то вставить
    Код с yaParams для отображения в Метрике IP адресов
    <?php echo'var yaParams = {ip_adress: «‘.$_SERVER[‘REMOTE_ADDR’].'»};’; ?>

    Скачала плагин, деактивировала его.
    Вставила этот код после всего (возможно, это уже какая-то ошибка)
    Сохранила.
    Пытаюсь активировать и получаю отбой:
    «Плагин не был активирован, потому что он вызвал фатальную ошибку.
    Parse error: syntax error, unexpected ‘<' in /home/j/justfotos/wordpress/public_html/wp-content/plugins/functionsphp/functionsphp.php on line 15"

    Я так понимаю, что нужно где-то что-то изменить или удалить.
    Но в PHP разбираюсь из рук вон как плохо.

    Очень прошу объяснить, что именно нужно удалить или изменить (прям вот, начиная с какого знака и заканчивая каким знаком) и где именно это сделать?

    Заранее большущее спасибо.

    • Тамара, ошибка будет выдаваться, если Вы неверно вставляете код. Для вставки строчки с определением IP адреса, нужно в плагин FunctionPHP вставить следующий код:

      function functionsphp_iptoyapams(){
          echo '<script>var yaParams = {ip_adress: "'. $_SERVER['REMOTE_ADDR'] .'"}; </script>';
      }
      add_action('wp_head', 'functionsphp_iptoyapams');
      • О, спасибо большое.
        Правда, если вставлять этот код в самом конце — после всего демонстрационной функции — то опять появлялась ошибка.

        Когда поставила код вместо демонстрационной функции — все активировалось.

        Может, я опять что-то не то навертела, конечно. Но вроде заработало.

        Спасибо большое.

        • Тамара, может вставили внутрь другой функции. Потому как при правильной вставке не будет иметь значения где добавлен код — в начале файла или в конце

          • Не, точно заменила. Потыкалась — постоянно ошибка. Решила рискнуть — и просто поставить на место демонстрационной. Все получилось.
            Думаю, ну работает — и ладно.

            Спасибо большое за помощь )))

  • Боже мой!
    Смотрю я и вижу, такая молодая, симпатичная девушка и в таком разбирается. Просто «Ужас» для меня. Куда мир катится, скоро придется большую часть времени проводить на кухне нам мужчинам, а не женщина, если они уже в таком возрасте «шарят» в том, о чем еще десяток лет назад и в голову прийти не могло.
    Я тут на днях тоже обратился за помощью в видоизменениях в кодах, в рубриках…, и кто вы думаете мне в этом помогает уже более 2-х лет, опять же женщина.
    Мужчины, это наша вина, мы наверное стали плохо работать, раз уже молодые девушки такое вытворяют.

  • Интересная идея. В принципе, чтобы при смене дизайна не мучатся с поиском своего кода в functions.php , достаточно об этом позаботиться заранее. При добавлении кода обкладывать его комментариями с объяснением назначения кода. И скопировать это все не составляет никакого труда. Да и шаблон меняется очень редко.
    Данный способ очень облегчит жизнь тем, кто создает много блогов. Ведь все сео-фишки типа удаления дублей и тд используются на всех блогах.

  • Приветствую! Натолкнулся на неожиданный камень))) С чем может быт связано, что данный плагин пропускает ошибку? Причем не на всех сайтах, на некоторых нормально отрабатывает, а на других спокойно сохраняет изменения плагина с ошибкой, правда потом сайт падает, но это уже другой момент

    • Артем, очень интересно. А какого рода ошибка, можете уточнить? Или пример кода.

      • Вот видео, где я рекламирую ваш способ https://www.youtube.com/watch?v=D5kbnrRSbQo по замене файла function.php на одноименный плагин. Так вот выяснилась одна вещь: если в коде присутствует ошибка (любая: скобка пропущена, нет запятой и тд) то сей плагин спокойно ее пропускает и производит сохранение, потом сайт падает в 500-ю ошибку до устранения. Не на всех сайтах такое (пробовал на локалке и на своем сайте), но есть. С чем может быть связано?

        • Артем, попробовала отловить — не вышло. Подозреваю вопрос может быть в версии PHP или в его настройках. Чтобы понять в чем именно проблема, нужно отлавливать ситуацию и отслеживать/сравнивать версию и настройки. Может еще вопрос в версии WordPress или установленных плагинах (которые иногда реально могут лезть в общие настройки системы и творить что угодно).
          Можете для примера статистику какую-то дать или конкретный случай — какое ПО, версии PHP и WordPress, плагины? Попробую отловить, может что дельное в голову придет по возможным причинам 🙂

          Но на самом деле весьма интересный случай, т.к. все сообщения об ошибках и активацию/деактивацию выполняет исключительно WordPress.

          • Хм, вот про версию пхп не подумал, проверю, потом отпишусь

      • Писал-писал комент, а он походу не дошел или в спам провалился. Написать еще раз?

  • Здравствуйте, Александра! Может не в тему пишу, но всё же… Можно ли посредством плагина, или ещё как-нибудь, сделать так, чтобы в вордпрессе при обновлении, а не в теме, файл index.php оставался неизменным? У меня в индексном файле добавлен скрипт, и при каждом обновлении вордпресса он слетает. Спасибо.

    • Сергей, как вариант можно попробовать ограничить запись файла через атрибуты. Но тогда есть риск, что WordPress будет выдавать ошибку обновления.

      • Александра, а как это сделать? В свойствах index.php выставить права на 0444?

        • Сергей, попробуйте ограничить на чтение и выполнение для владельца в 0500 (или в символьном варианте r-x --- ---).

          • Александра, большое спасибо! Буду ждать обновления WordPress, чтобы проверить.

  • Александра,

    спасибо за статью и интересную идею, завести отдельный плагин для всех кодов и добавлений, чтобы не засорять файлы шаблон. Установил Ваш плагин у себя, в теле, после кода, как Вы и объясняли установил коды очистки:

    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
    remove_action( 'wp_head', 'feed_links_extra', 3 );"

    Но, что-то плагин ругается и ничего на работает… (((
    Прошу посоветовать, что я ни так сделал?

    • Виталий, если код скопировали один-в-один как сейчас в вашем комментарии — то в самом конце второй строки лишняя кавычка, просто удалите её

  • Александра, спасибо за подсказку, кавычка в конце была лишней действительно. Исправил, плагин сейчас не ругается, но как я понимаю функции указанные мною выше не работают. Они должны были отключать функцию wp_head() вывода ссылок на фид комментариев, но почему-то функция не работает, ссылки не убираются (((.
    Как мне объяснили, я должен был поставить эти отключения в funcions.php в самый конец, перед знаком ?>, но я решил поставить в плагин Funcions.PHP и что-то не работает.
    Не поможете разобраться? Спасибо за помощь!

  • Добрый день, почему у вас дублируется код Гугл Аналитики, если открыть код страницы!

  • Александра, супер! Спасибо за статью, буду разбираться!

  • А если wordpress уже подключен к гугл аналитике? что -то изменится? не помню уже ,как подключал и что ,где менял….

    • Андрей, после установки плагина с аналитикой ничего не изменится. До тех пор, пока Вы самостоятельно не перенесете код скрипта в этот плагин (если, конечно, аналитика у Вас подключается не через специализированные плагины).

  • Здравствуйте, а плагин больше не доступен?

  • Здравствуйте, на странице http://1zaicev.ru/kak-izmenit-stranicu-vxoda-v-admin-panel-wordpress/ указаны методы защиты доступа к форме входа WordPress путём внесения изменений в файл functions.php. Там есть ссылка на эту статью, но при добавлении приведённого там кода в плагин ничего не изменяется. Во всяком случае в версии 4.6.1 посредством плагина это не работает. Я хотел бы узнать что нужно исправить в коде чтобы всё заработало?

    • Нафис, работоспособность кода лучше уточнить у автора. На всякий случай проверьте что плагин активирован и выводит комментарий в исходном коде вот такого вида:

      <!-- Плагин Functions.PHP активен -->
  • Добрый день!
    Кто знает, как изменить поисковой запрос SQL в вордпресс полностью, а не только его часть?
    Ну или хотя бы как увидеть результирующий запрос, чтобы разобраться почему не рабоатет?

  • Здравствуйте! Заинтересовали, хотела скачать плагин, но он не скачивается.

  • спасибо, полезная статья

  • Александра, здравствуйте. Отблагодарил чашечкой кофе. Не знаю, что было причиной краха будущего блога, но подозреваю, что именно обновление файла funktion.php после бездумного редактирования шорткода (хотел его «усовершенствовать», чтобы вставлял не только кнопку но и надпись в конце записи в статье). На одном сайте тоже комментировал (там рассказали, как делать шорткоды), там же рассказывалось, что шорткод надо ставить до ?> Но я ж самый умный, мало ли что напишут, поставил в конце. Все заработало, радости не было границ, написал благодарность тому автору. Мое сообщение прокомментировали ссылкой на ваш блог. Но тут я увидел крайне разумный подход, потому и угостил вас чашечкой кофе.
    P.S.: Пользуясь случаем просто задам вопрос. Я зарегистрировал домен на IHead. Потом встретился с информацией, что это может обернуться проблемами, если не регистрировать на каком-то супер-пупер российском главном сайте доменов. Но там цена раза регистрации раза в три больше. Так все таки может ли это каким-то боком меня зацепить, если я захочу сменить хостинг (я его еще пока не брал, только думаю, на том же IHead). Развернутого ответа не требуется, достаточно отправить меня в плавание по ссылке. Я не люблю нагружать людей, когда у меня своя голова на плечах есть.

    • Денис, домен и хостинг могут быть оформлены у разных компаний. О надежности IHead и возможных проблемах — ничего не подскажу, не знакома с ним.

      Озвученная Вами информация скорее всего о том, что домены лучше покупать напрямую у регистраторов, чтобы при продаже или других действиях с ним не было проблем оформления документов.

  • Александра, попробую чуть-чуть обнаглеть по скромному (наглость второе счастье, а скромность вторая наглость *smile*), но лучше задать вопрос, чем бояться получить по какой-нибудь части тела. Мне очень понравилась кнопка «Поблагодарить автора». Мой блок будет касаться электрики и будет профессиональным, рассчитанным на широкий круг аудитории, то есть в нем будет рассказываться просто о сложном. Естественно, это мой труд, я очень надеюсь, что у людей возникнет желание меня как-то при этом поблагодарить (за качественное и доступное изложение), и мне бы хотелось иметь такую кнопку. Собственно, вопрос: что нужно сделать, чтобы вы поделились секретом ее создания?

    • Денис, никакого секрета в ее создании нету — сделайте картинку-баннер, по клику на неё — открывайте html страничку статичную, в коде которой разместите платежные формы от яндекса или вебмани. Они уже есть готовые:
      Яндекс — https://money.yandex.ru/embed/quickpay/shop.xml
      WebMoney — https://www.webmoney.ru/rus/business/accept-payments/funding/merchant.shtml

      • Александра, спасибо большое за ответ. Тогда уточняющий вопрос, как сделать всплывающее меню социальных ссылок, как у вас class=»social_share ss-show», ну или опять же ткните носом, где найти эту информацию. Кстати сайт запустил. Пока в черновом варианте, но что-то получилось. Во всяком случае, стандартную тему немного изменил.

        • Денис,

          в подвале сайта, например (или после статьи) добавьте код самого меню с соцкнопками, настройте стили с фиксированным положением снизу экрана. И добавьте скрипт вроде такого, что будет срабатывать при прокрутке страницы и анимировать плавное появления

          // social share	
          	$(window).scroll( function() {
          		var off = $(this).scrollTop();
          		var max_off = $('#bottom').offset().top - 1000;
          		if (  off >= 300 && off <= max_off ) {
          			$('.social_share').SlideUp();
          		}  else {
          			$('.social_share').SlideDown();
          		}
          	});

          Но проще, конечно, полное руководство в сети найти 🙂

          • Большое спасибо за ответ! Будем поискать!

  • Задаю вопрос, потому что нигде ничего похожего не нашел. Может быть вы меня сможете послать куда-нибудь, где рассказывается, как найти эту кнопку 🙂

  • Еще раз хочу отблагодарить. Создавал шоткод со значением var (надо было добавить аббревиатуру «вар — вольт-ампер реактивные»), ну и на сайте «все пропало». Стал искать и нашел отключенный functions.php с указанием строки ошибки. Немного подумал, заменил значение шоткода, активировал плагин и все заработало. Боюсь представить, что было бы… если бы не файл отдельным плагином.

  • Два часа сидела, разбиралась.. Мне всего то нужно, чтоб Ip смотреть в яндекс метрике.. но так и не получилось(( Эх, мне бы видео какое для наглядности))

    • Рита, для работы с данным плагином желательны базовые знания HTML/PHP. Без этого действительно сложно разобраться и можно ненароком навредить своему сайту

  • Здравствуйте, не могу понять куда и как нужно вставлять в плагине свои коды? Получаю белый экран.

  • Здравствуйте, Александра. Спасибо за замечательную статью.
    Использую этот способ для изменения порядка вывода элементов страницы товара woocommerce.
    В результате добавление элементов работает, а удаление — нет.
    Похоже, что плагин FunctionsPHP удаляет элементы раньше, чем woocommerce их добавил.
    Как поменять последовательность работы плагинов?

    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); 
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20); 
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10); 
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 20); 
    • Сергей, вызывайте этот код не просто в плагине, а внутри функции, которая подключается на хук init или wp с приоритетом повыше:

      function my_func(){
           // my remove & add
      }
      add_action( 'wp', 'my_func', 100 );
  • Спасибо!!!
    Информация просто шикарная!
    Подскажите, плз, мне на нескольких сайтах надо полностью менять стандартное содержание темы между тегами …………, это можно как-то реализовать через функцию «add_action(‘wp_head’,…..»?
    Т.е. чтобы полностью все содержание заменялось?

  • Не проходит что-то, теги head короче 🙂

    • Не проходит, потому что код не отметили.

      Нет, вам придется удалять все экшены, подключенные на wp_head. Плюс, не факт что в header.php самой темы между <head></head> только вызов <?php wp_head(); ?>

      Эффективнее будет создать дочернюю тему, скопировать в нее исходник файла header.php и там творить чудеса

      • Спасибо! Буду изучать про дочерние темы. 🙂
        Вы конечно просто супер во всём. 🙂

  • Вставил код
    * ==========================================================================
    * Определение IP-адреса
    * ========================================================================== */
    function add_ipadress () {
    echo ‘var yaParams = {ip_adress: «‘. $_SERVER[‘REMOTE_ADDR’] .'» };’;
    }
    add_action( ‘wp_head’, ‘add_ipadress’ );
    /* ========================================================================== */

    в плагин Functions.PHP, Предварительно его деактивировал.
    Получил ответ: Плагин не был активирован, потому что он вызвал фатальную ошибку.
    Подскажите, где я сделал ошибку.

    С уважением Сергей

    Прилагаю скриншот: сообщение об фатальной ошибке.

    • Функция (т.е. этот кусок кода) уже есть в файле вашей темы. Нужно предварительно удалить его оттуда, перед активацией плагина

  • Тема. Как удалить заголовок всех или некоторых страниц?
    Ну, не знаю… Во-первых, зачем эти заголовки в шаблоне по умолчанию? Во-вторых. не проще ли было бы просто подсказать, где в коде что изменить. А плагин… ну, скачал, установил, изменил — добавил код, активировал. И — ничего не произошло))) Что я не так сделал?

    • Валерий, в плагине нету никакого кода. Он как раз предназначен для хранения ваших пользовательских функций. Смена заголовков и их наличие в шаблонах — не по теме

  • Перепробовал много чего. Выход нашел. Названия страниц поудалял в меню, а именно второе меню сделал и вывел его и в подвале ( пока ) и вверх тоже его поставил.

  • Проделал всё как описано в статье. Несколько раз, т.к. думал что мог ошибиться при копировании кода.
    Результат такой что сайт после вставки кода в счётчик метрики params: yaParams, показывает пустую страницу.

  • Вот так замануху вы закинули, теперь ищу на https://codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%D0%BC
    функцию для изменения файла style.css, но пока что поиски не увенчались успехом. Может завтра проснусь заварю кофе, зайду на ваш интересный сайт и увижу яблочко на тарелочке с голубой каемочкой ))))))))))))

  • Здравствуйте. Установил, активировал плагин на двух разных сайтах с разными темами и наборами плагинов. Версии WordPress одинаковы — 4.6.1. Однако, на одном сайте строка в исходном коде имеется, на другом ее нет.
    В чем может быть причина? Возможен ли конфликт с файлами темы или другими плагинами? Можно ли как-то это исправить? Может ли плагин работать без показа html-комментария об активности плагина? Если да, то как это можно проверить?

    • Проблема может быть только если на одном из сайтов есть плагин, минифицирующий html код — они как правило удаляют комментарии

  • Кажется, разобрался. Строка не показывается при включенном плагине WP Super Minify, который, сжимая код, убирает комментарии. Осталось два вопроса: Может ли плагин работать без показа html-комментария об активности плагина? Если да, то как это можно проверить?

    • вот, так и есть 😉 Да, плагин полностью работоспособен без этой строчки

  • Добрый день.Идея супер,спасибо) Я бы Вам предложил ваш, уже готовый, переложить на другое хранилище)так как яндекс не работает) .
    Еще раз спасибо за идею)

  • И зачем идти против кодекса ВП, если глобальные функции нужно переопределять через файл functions.php дочерней темы что бы обновляться без потерь и изменять функционал темы, а пилить плагин ради счетчиков — время потраченное впустую.
    Вариант для начинающих, что бы почувствовать себя крутым разработчиком и понять что так делать не стоит.

    • Денис, спасибо за ответ!
      Если у Вас вдруг возникнет необходимость каждую неделю менять тему, тогда может прийти понимание зачем создавать такой «плагин». Можно конечно поставить что-то с готовыми полями для ввода, но каждый выбирает под свои нужны.
      А счетчики я отношу к критическом данным — они не относятся к внешнему оформлению, согласны?

      https://developer.wordpress.org/themes/getting-started/what-is-a-theme/#what-is-the-difference-between-a-theme-and-a-plugin

      What is the difference between a theme and a plugin?

      It is common to find cross-over between features found in themes and plugins. However, best practices are:
      — a theme controls the presentation of content; whereas
      — a plugin is used to control the behavior and features of your WordPress site.

      Any theme you create should not add critical functionality. Doing so means that when a user changes their theme, they lose access to that functionality. For example, say you build a theme with a portfolio feature.Users who build their portfolio with your feature will lose it when they change themes.

      By moving critical features to plugins, you make it possible for the design of your website to change, while the functionality remains the same.

      Да и на деле часто проблема в том, что для обычного пользователя, который сплошь и рядом натыкается на вставьте этот код… чуть ли не 3к строк … в ваш functions.php чтобы не устанавливать плагин, создать дочернюю тему оказывается непосильной прям задачей. Это из личного опыта составлена такая статистика — люди боятся дочерней темы и не понимают как она работает.

Комментировать

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

wp-puzzle.com logo