• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Совет Плагин или код в тему?

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Давайте разберем такой сложный вопрос, как встроить различные модификации на сайте.
Как мы уже обсуждали миф о количестве плагинов не состоятелен, тк нет разницы из какого места исполняется один и тот же код...
Но давайте пойдем дальше.
Вы нашли некий хук или решили добавить функционал на Ваш сайт, как быть? Искать плагин или внедрять код. Тут возникает масса проблем, первая и основная если внедрим код то при обновлении все Ваши труды пойдут прахом и придется все делать заново, плагин... Плагин это хорошо но часто такого или нет или это просто кусок кода который Вам помогает и как таковой не является чем то значимым в других случаях.

Так как же быть, а все очень просто и очень сложно и в то же время решаемо!

Честно говоря, это зависит от множества факторов. Когда вы сталкиваетесь с необходимостью добавить пользовательский код в WordPress, вам следует:

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

И теперь рассмотрим вариант создать плагин для Ваших нужд.

Создаем папку у себя на компьютере с названием например mykod
В нем создаем файл index.php и открываем в Notepad+++ или в AkelPad. (имя файла и папки на ваше усмотрение это не столь важно)

вставляем такой простой код

PHP:
<?php
/*
Plugin Name: ВАШЕ_ИМЯ_ПЛАГИНА
Author: ВАШЕ_ИМЯ
Author URI: http://ВАШ_URI
*/

/*  Copyright 2017 ВАШЕ_ИМЯ (email: ВАШЕ@МЫЛО)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    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
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
Либо этот вариант кода
Код:
<?php
/**
* Plugin Name: [Insert Name]
* Plugin URI: [Insert Plugin URL]
* Description: [Insert Short Description]
* Author: [Insert Your Name]
* Author URI: [Insert Your URL]
* Version: 1.0
* Text Domain: plugin-name
*
* Copyright: (c) 2012-2014 [Insert Your Name] (your@email.com)
*
* License: GNU General Public License v3.0
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
*
* @author    [Insert Your Name]
* @copyright Copyright (c) 2012-2014, [Insert Your Name]
* @license   http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
*
*/

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

//Add your custom code below this line
После этого кода вставляем нужные куски кода копируем на ваш сайт в папку /wp-content/plugins
И активируем в панели управления во вкладке плагины.

Можете поступить так папку упаковать в архив zip и воспользоваться стандартным установщиком плагинов.

Используйте файл functions.php вашей дочерней темы
Это лучшее решение для кодов, которые нужно вставить прямо в вашу тему, а не в плагин, типа WooCommerce. Это тот случай, когда кастомный код убирается вместе с вашей темой, так как в нем больше нет нужды. Но в любом случае, если вы хотите обновлять темы, то необходимо внедрять все коды только в дочерние темы.
Чтоб вы могли начать работу, Для просмотра ссылки Войди или Зарегистрируйся, который содержит файл functions.php. Скачайте его и распакуйте, а затем измените файл style.css. Вам нужно будет вбить название шаблона и импортировать URL, чтоб отобразить информацию о вашей родительской теме.

редактирование PHP-файлов.
PHP- файлы изменяются по той же схеме, которую мы использовали, редактируя css-файлы. Некоторые файлы дочерней темы перекрывают одноименные файлы родительской темы в автоматическом режиме. Например, если вы хотите отредактировать файл header.php, просто создайте новый header.php в папке дочерней темы и внесите туда желаемые изменения, новый header.php будет подключаться автоматически, вместо аналогичного файла родительской темы.

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

Вот как то так...
Критика вопросы и дополнения приветствуются
Всех благ!
 
Последнее редактирование:

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И так давайте создадим простейший плагин из того что представлено в первом сообщении

добавим к начальному коду
Код:
<?php
/*
Plugin Name: ВАШЕ_ИМЯ_ПЛАГИНА
Author: ВАШЕ_ИМЯ
Author URI: http://ВАШ_URI
*/

/*  Copyright 2017 ВАШЕ_ИМЯ (email: ВАШЕ@МЫЛО)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    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
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
вот этот кусок
Код:
/* * Данные о количестве запросов к базе данных в подвале админки */
function wp_usage(){
printf( ('SQL: %d за %s сек. '), get_num_queries(), timer_stop(0, 3) );
if ( function_exists('memory_get_usage') ) echo round( memory_get_usage()/1024/1024, 2 ) . ' mb '; }
add_filter('admin_footer_text', 'wp_usage');
// Если использовать фильтр wp_footer, то эти данные появятся в подвале сайта (шаблона).
// add_filter('wp_footer', 'wp_usage');
поместим его в папку с плагинами и активируем...
зайдем в админку и любуемся своими трудами...

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


Если на каком-либо ресурсе вам предлагают добавить код в файл functions.php, а функция кода не относится к шаблону непосредственно, то не ленитесь сделайте плагин из этого кода и возможно в будущем избежите неожиданной пропажи добавленного ранее функционала.


И напоследок порядок исполнения кода при загрузке WP

Код:
index.php
    wp-blog-header.php
        wp-load.php
            wp-config.php
                wp-settings.php
                    // Подключаются самые базовые функции (подключение к БД $wpdb и система фильтров)
                    // Подключаются базовые фильтры

                    // SHORTINIT: Остановка загрузки, где есть только самое базовое: if ( SHORTINIT ) return false;

                    // подключается вся среда WordPress: базовые функции, фильтры

                    // подключаются must-use плагины, затем срабатывает событие:
                    do_action( 'muplugins_loaded' );

                    // подключаются активированные плагины, затем срабатывает событие:
                    do_action( 'plugins_loaded' );

                    // устанавливаются глобальные переменные: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ...

                    do_action( 'setup_theme' );
                    // устанавливается текущая тема
                    // подключается файл темы >>>>>>>>>>>> functions.php <<<<<<<<<<<<
                    do_action( 'after_setup_theme' );

                    // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено:
                    do_action( 'init' );

                    // проверка статуса сайта для мультисайтовой сборки

                    // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти)
                    do_action( 'wp_loaded' );

        wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним

        wp-includes/template-loader.php // подключает нужный файл шаблона
 
Последнее редактирование:

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Must-Use plugins или обязательные плагины

Обязательные к использованию плагины (Must-use plugins), известные как mu-plugins — это плагины, которые устанавливаются в специальную папку mu-plugins в каталоге контента wp-content и активируются автоматически (всегда активны). Эти плагины не видно среди обычных плагинов в админ-панели - они отображаются в верхней информационной строке и их невозможно отключить, кроме как удалить файл плагина из каталога wp-content/mu-plugins.

Еще такие плагины не могут находится в папках - это должен быть файл в папке wp-content/mu-plugins. Т.е. WordPress автоматически подключает все файлы из папки mu-plugins, но не проверяет вложенные папки, где тоже могут быть файлы. Подключение файлов из вложенных папок должно прописываться вручную в файле из основной папки.

Для чего эта информация спросите Вы, а вот не скажу...

Шучу )

Это к тому что если Вы создали свой собственный плагин и поместили как описано выше то нужды в его активации нет он всегда активен и в любом случае помогает Вам

Недостатки «необходимых» плагинов
Чаще всего нет необходимости использовать эти плагины, потому что обычные плагины удобнее.
  • Не проверяются на наличие обновлений, а значит при появлении новой версии плагина мы не увидим уведомление о необходимости обновить плагин. Поэтому следить за появлением новой версии нужно самостоятельно;

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

  • WordPress ищет php файлы в каталоге my-plugin и делает это не так как для обычных плагинов - не просматривает файлы внутри вложенных папок. В этом случае, нужно будет создать загрузочный файл в каталоге my-plugin, чтобы он подключал файлы из подкаталогов, вот так:
Код:
// mu-plugins/load.php
require WPMU_PLUGIN_DIR.'/my-plugin/my-plugin.php';
MU плагины загружаются раньше обычных.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Дополню тему инфографикой.
wordpress-snippet-or-plugin-640x823.jpg
 

Fishka

ЭКСПЕРТ

Fishka

ЭКСПЕРТ
Сообщения
604
скажу наверное крамольную вещь, но глобально - какая нах разница

основные проблемы - из-за кривости кода... или большого числа запросов.

а где он размещен (код) - это уже вторично
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
скажу наверное крамольную вещь, но глобально - какая нах разница

основные проблемы - из-за кривости кода... или большого числа запросов.

а где он размещен (код) - это уже вторично
ну в принципе тема об этой мысли )))
 

Топ поддержки


Сверху